场合
我在C#项目中使用Bouncy Castle API。我需要使用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==
问题
byte[]
从String
转换为System.Text.ASCIIEncoding.ASCII.GetString()
,但我得到的符号如“!?...”我想最后避免使用“==”。我该怎么办 ?改变编码器?答案 0 :(得分:2)
==
是基础64 padding结果的结果。如果你愿意,你可以剥掉它们。
答案 1 :(得分:0)
您可能需要摘要的十六进制表示而不是base64表示。
return BitConverter.ToString(result).Replace("-", string.Empty);
你最终会得到:
b3b438c3b84574bb4069e0d667a18503f82fedb5