2011-03-02 43 views
1

形勢消化消息,並從字節最佳編碼[]爲String

我用我的C#項目充氣城堡API。我需要使用Org.BouncyCastle.Crypto

我的樣品哈希String

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)); 

由於作爲結果,我有一個哈希看起來像

問題

  1. 我總是「==」在任何不同的消息結尾。這是正常的嗎?
  2. 我試圖使用System.Text.ASCIIEncoding.ASCII.GetString()byte[]轉換爲String,但我得到的符號像「!?...」我最終要避免「==」。我該怎麼辦 ?改變編碼器?
+0

我使用SHA-1散列我的算法和它也讓那些==底。 – mikesigs 2011-03-02 20:29:51

+0

好的謝謝=] – 2011-03-02 21:06:53

回答

2

==是基於64的結果padding的結果。如果你願意的話,你可以去掉它們。

+0

你的意思是多餘的字符? – 2011-03-02 21:05:27

+0

我沒有說額外的字符。我說填充。 base64編碼一個字符串可以導致填充結果。 – Amy 2011-03-03 03:51:25

0

您可能需要摘要的十六進制表示,而不是base64。

return BitConverter.ToString(result).Replace("-", string.Empty); 

你將結束:

b3b438c3b84574bb4069e0d667a18503f82fedb5