如何实现MD5带参数加密?

sinat_19821003 2014-08-20 04:50:07
今天在网上找到了个MD5加密算法
public String md5(String s)
{
System.Security.Cryptography.MD5 md5 = new System.Security.Cryptography.MD5CryptoServiceProvider();
byte[] bytes = System.Text.Encoding.UTF8.GetBytes(s);
bytes = md5.ComputeHash(bytes);
md5.Clear();
string ret = "";
for(int i=0 ; i<bytes.Length ; i++)
{
ret += Convert.ToString(bytes[i],16).PadLeft(2,'0');
//ret += Convert.ToString(bytes[i],16).PadLeft(2,'0').ToUpper();//转换为大写
}
return ret.PadLeft(32,'0');
}
但是发觉这样加密不安全,很多网站可以通过跑字典的方式跑出来,能给我个带参数的MD5加密方法么?

...全文
397 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
於黾 2014-08-21
  • 打赏
  • 举报
回复
知道什么叫"加盐"么? 所谓跑字典,也不过是将一些常用的密码明文的散列值存储,然后比对 比如111111,123456,abcdef这些 既然叫字典,它总有一个限度,不是任何散列值都能匹配上的 你弄一个超复杂的字符串,追加到密码明文后面,然后MD5 匹配密码的时候,同样将相同的字符串追加,MD5,然后比较 或者将生成的MD5再做一次MD5
踏平扶桑 2014-08-21
  • 打赏
  • 举报
回复
觉得不安全可以换成带密匙的加密方法。 不过你的站要是一般应用在别人不能拿到数据库的情况下,是没有问题的。 如果你的只是个小站,也不用担心这点。
事理 2014-08-21
  • 打赏
  • 举报
回复
QQ以前的加密 #region 密码md5加密 /// <summary> /// md5加密 /// </summary> /// <param name="password">原始密码</param> /// <param name="verifycode">验证码</param> /// <returns>加密后密码</returns> public static string GetPassword(string password, string verifycode) { return md5(md5_3(password).ToUpper() + verifycode.ToUpper()).ToUpper(); } private static string md5_3(string input) { System.Security.Cryptography.MD5 md = System.Security.Cryptography.MD5.Create(); byte[] buffer = md.ComputeHash(Encoding.Default.GetBytes(input)); buffer = md.ComputeHash(buffer); buffer = md.ComputeHash(buffer); return binl2hex(buffer); } private static string md5(string input) { byte[] buffer = System.Security.Cryptography.MD5.Create().ComputeHash(Encoding.Default.GetBytes(input)); return binl2hex(buffer); } private static string binl2hex(byte[] buffer) { StringBuilder builder = new StringBuilder(); for (int i = 0; i < buffer.Length; i++) { builder.Append(buffer[i].ToString("x2")); } return builder.ToString(); } #endregion
  • 打赏
  • 举报
回复
引用 楼主 sinat_19821003 的回复:
但是发觉这样加密不安全,很多网站可以通过跑字典的方式跑出来,能给我个带参数的MD5加密方法么?
谁跟你说“带参数”就能防止半点“跑字典”?屁作用也没有。你自己用脑袋想想什么叫做“跑字典”吧,这玩意儿跟你用什么高大上的“加密方法”都毫无关系。
祥子爱游戏 2014-08-20
  • 打赏
  • 举报
回复
可以加盐啊啊啊
祥子爱游戏 2014-08-20
  • 打赏
  • 举报
回复
要多少加密啊,MD5就行
ayanamireizero 2014-08-20
  • 打赏
  • 举报
回复
你把要加密的字符串用des加密,再做sha256加密,再做MD5加密,结果就是跑字典估计很难跑出来了
threenewbee 2014-08-20
  • 打赏
  • 举报
回复
byte[] bytes = System.Text.Encoding.UTF8.GetBytes(s + "123");

62,047

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧