public static string MD5Encrypt(string str)
{
MD5 md5 = new MD5CryptoServiceProvider();
byte[] bstr = System.Text.Encoding.UTF8.GetBytes(str);
byte[] reb;
reb=md5.ComputeHash(bstr);
string restr="";
Console.WriteLine(reb.Length);
for(int i=0;i<reb.Length;i++)
{
restr+=reb[i].ToString("X");
}
return restr;
}md5加密以后出来的结果不是应该是32么?为什么我这儿出来的结果是31位的呢?
{
MD5 md5 = new MD5CryptoServiceProvider();
byte[] bstr = System.Text.Encoding.UTF8.GetBytes(str);
byte[] reb;
reb=md5.ComputeHash(bstr);
string restr="";
Console.WriteLine(reb.Length);
for(int i=0;i<reb.Length;i++)
{
restr+=reb[i].ToString("X");
}
return restr;
}md5加密以后出来的结果不是应该是32么?为什么我这儿出来的结果是31位的呢?
解决方案 »
- ushort 转 byte[] 求高手答疑~!小弟先谢谢了~
- 关于找不到类型或命名空间名称的问题
- 我的难题,没分了。分不够解决了保证再加!
- 请教使用XmlTextReader读取复杂XML文件相关值的方法
- to 版主:关于CSDN结贴界面的UI更改建议
- 【DLL加载之最难问题】DllImport如何提高调用DLL的速度(用DllImport调用非COM和.Net的DLL)
- c#中如何实现电子盖章?
- GridView邦定数据源在添加了几行数据后再删除数据时 SqlDataAdapter.Update(DataSet)删除的数据更新不到数据库希望路过高手帮忙谢谢
- 如何利用多线程来提高程序运行效率
- 请问这个例子怎样运行?
- form1控制form2 怎样实现
- ADO.NET 建立ACCESS数据库表问题,在线等待。
改成这样试试
使用ascii编码得到的只有30位,而且ascii编码以后得到的结果和utf8还不一样。
用MD5的C#源码加密和用C#带的MD5算法加密
我测试的结果用Ascii 和这份源码生成的结果是一样的
{
string hexString = "";
string format = "x2";
if (uppercase)
{
format = "X2";
}
foreach (byte b in array)
{
hexString += b.ToString(format);
}
return hexString;
} MD5 MD5Provider = new MD5CryptoServiceProvider();
private void btnMD5_Click(object sender, EventArgs e)
{
this.txtUtilityInfo.Text = ArrayToHexString(MD5Provider.ComputeHash(Encoding.ASCII.GetBytes(this.txtStringInfo.Text)), false);
}
不知道你转成字符串的时候会不会有问题
标准的format 是X2 或者x2 ,你的是X