HMAC-SHA-1やHMAC-SHA-256などのハッシュ化についてです。
ハッシュ化する前に文字をバイト配列へ変換すると思います。
ハッシュ化する文字列をどの文字コードでエンコードするかによって生成するバイト配列は違いますよね。
「エンコードされる文字列の文字コード」と「エンコードに使用する文字コード」を同じにする必要があるとゆうことですか?逆にそれ以外のエンコードに使用する文字コードでエンコードした場合は間違え。といった感じでしょうか?
具体的にいうとこんな感じです。
textの文字コードはUnicodeです。
ハッシュ化に用いるバイト配列の生成方法としてただしいのはUnicodeエンコードで生成されたバイト配列でそれ以外は間違いとゆうことなのでしょうか。
string text = "あ"; //ASCII エンコード byte[] data = System.Text.Encoding.ASCII.GetBytes(text); foreach (var d in data) { Console.WriteLine(d); } Console.WriteLine(""); //Shift-JISエンコード data =System.Text.Encoding.GetEncoding("shift_jis").GetBytes(text); foreach (var d in data) { Console.WriteLine(d); } Console.WriteLine(""); //EUCエンコード data = System.Text.Encoding.GetEncoding("euc-jp").GetBytes(text); foreach (var d in data) { Console.WriteLine(d); } Console.WriteLine(""); //unicodeエンコード data = System.Text.Encoding.Unicode.GetBytes(text); foreach (var d in data) { Console.WriteLine(d); } Console.WriteLine(""); //UTF8エンコード data = System.Text.Encoding.UTF8.GetBytes(text); foreach (var d in data) { Console.WriteLine(d); } Console.ReadKey();
出力
63 130 160 164 162 66 48 227 129 130
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2018/11/07 07:40
2018/11/08 04:36