1

状況

C#プロジェクトでBouncyCastleAPIを使用しています。Stringを使用してハッシュする必要がありますOrg.BouncyCastle.Crypto

私のサンプル

String msg = "Message to Hash"; 
MD5Digest dig = new MD5Digest(); 

byte[] msgBytes = System.Text.ASCIIEncoding.ASCII.GetBytes(msg);
dig.BlockUpdate(msgBytes, 0, msgBytes.Length);
byte[] result = new byte[dig.GetDigestSize()]; 
dig.DoFinal(result, 0);
Console.WriteLine("{0}", Convert.ToBase64String(result));

その結果、私は次のようなハッシュを取得しましたXasdDdflk7ghXi8azuhe==

質問

  1. 別のメッセージの最後に常に「==」が表示されます。正常ですか?
  2. byte[]からString使用に変換しようとしましSystem.Text.ASCIIEncoding.ASCII.GetString()たが、「!?...」のような記号が表示されます。最後に「==」を使用しないようにします。私は何をすべきか ?エンコーダーを変更しますか?
4

2 に答える 2

2

これ==は、base 64 で結果をパディングした結果です。必要に応じて、それらを取り除くことができます。

于 2011-03-02T20:33:20.667 に答える