Дайджест сообщения и лучшая кодировка из байта [] в строку - PullRequest
1 голос
/ 02 марта 2011

Положение

Я использую Bouncy Castle API в своем проекте на C #. Мне нужно хешировать 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(), но я получаю символы типа "!? ...". В конце я хочу избежать "==". Что я должен делать ? меняется кодер?

Ответы [ 2 ]

2 голосов
/ 02 марта 2011

== является результатом базового 64 заполнения результатом. Вы можете раздеть их, если хотите.

0 голосов
/ 11 июня 2014

Возможно, вам нужно шестнадцатеричное представление дайджеста, а не base64.

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

И в итоге вы получите:

b3b438c3b84574bb4069e0d667a18503f82fedb5
...