这样的加密方式该如何去解?

sinat_23909879 2014-11-25 11:21:14
byte[] pass = Encoding.Unicode.GetBytes(textBox1.Text);
MD5 md5 = new MD5CryptoServiceProvider();
String password = Encoding.UTF8.GetString(md5.ComputeHash(pass));

如何不更改代码只增加代码去解开password 成为一个md5的值?
只需要解成md5即可~
求解各种方法都试了 都不行。。
...全文
630 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
sinat_23909879 2014-11-26
  • 打赏
  • 举报
回复
问题解决了,因为回答者的原文把。
qq_23896009 2014-11-26
  • 打赏
  • 举报
回复
我想到一个问题我想到一个问题
卧_槽 2014-11-26
  • 打赏
  • 举报
回复
舌头捋不直的程序员肯定找不着对象
xiaoxinxin1128 2014-11-26
  • 打赏
  • 举报
回复
http://download.csdn.net/my MD5加密解密 简单方便 快捷 一行代码即可实现加密解密
xiaoxinxin1128 2014-11-26
  • 打赏
  • 举报
回复
string pwd = (new ESucess.Encrypt("")).Encrypto(textBox1.Text);
layershow 2014-11-26
  • 打赏
  • 举报
回复
原来问的是……这个……
  • 打赏
  • 举报
回复
那你就应该用对称加密算法加密,MD5的设计初衷就是不可逆的,还解什么密
黎明的向日葵 2014-11-26
  • 打赏
  • 举报
回复
引用 2 楼 sp1234 的回复:
不更改代码只增加代码,那么结果代码就是
byte[] pass = Encoding.Unicode.GetBytes(textBox1.Text);
 MD5 md5 = new MD5CryptoServiceProvider();
 String password = Encoding.UTF8.GetString(md5.ComputeHash(pass));
return textBox1.Text;
不用去动脑筋想就知道直接 return 明文啊。
这么写,中间那些代码还留着干嘛??直接=textbox1.Text不就好
黑子大哥 2014-11-26
  • 打赏
  • 举报
回复
晕哦,LZ你自己吧自己搞混了,你看到的乱码其实就是一个MD5值 程序对比其实对比的是MD5值不是明文 好比123456加密MD5之后成XXXXXXXXXX 程序对比的时候并不是将XXXXXXXXXX换成明文对比 而是直接对比的MD5值
sinat_23909879 2014-11-25
  • 打赏
  • 举报
回复
这样做确实可以,但是少了Encoding.UTF8.GetStrin() 密码是这样存储的,没办法。所以现在我想把生成后的密码给转成一个md5的字符串就好了
layershow 2014-11-25
  • 打赏
  • 举报
回复
哦,你是想要 16 进制的字符串?

byte[] data = md5.ComputeHash(pass);
StringBuilder sbPass = new StringBuilder();
for (int i = 0; i < data.Length; i++)
{
    sbPass.Append(data[i].ToString("x2"));
}

string password = sbPass.ToString();
sinat_23909879 2014-11-25
  • 打赏
  • 举报
回复
最后password的值成为了一个乱码,但是程序跟数据库都能识别这个乱码并且去做比对。 不知道能用什么方式把password的值给 转成md5的值,只需要得到md5的值就可以了 不需要解密md5
layershow 2014-11-25
  • 打赏
  • 举报
回复
不用想了,解不开,MD5 你有 1T 数据弄下来也就那几个字节 如果能还原,相当于你可以把整个宇宙的信息填到这几个字节中,你就是神 MD5 的结果不是唯一,只是重复概率很低
  • 打赏
  • 举报
回复
不更改代码只增加代码,那么结果代码就是
byte[] pass = Encoding.Unicode.GetBytes(textBox1.Text);
 MD5 md5 = new MD5CryptoServiceProvider();
 String password = Encoding.UTF8.GetString(md5.ComputeHash(pass));
return textBox1.Text;
不用去动脑筋想就知道直接 return 明文啊。
  • 打赏
  • 举报
回复
什么叫做“解开成为md5值”?原来就是明文,还要解开吗? 你这个“解开明文”的做法,平潭县的陈局长一定也是这么做的。
周美文 2014-11-25
  • 打赏
  • 举报
回复
引用 10 楼 shang1010 的回复:
我想到一个问题 数据库中存放的是MD5值,如果用户忘记了密码,要修改密码时,要怎样的思路? 是不是 有一个是否忘记密码的字段,如果这个字段为True 把密码变为空 让用户在重新设置密码?
一般做法是直接把旧密码update为新密码的md5值实现修改密码
跳舞的码农 2014-11-25
  • 打赏
  • 举报
回复
我想到一个问题 数据库中存放的是MD5值,如果用户忘记了密码,要修改密码时,要怎样的思路? 是不是 有一个是否忘记密码的字段,如果这个字段为True 把密码变为空 让用户在重新设置密码?
shawn_yang 2014-11-25
  • 打赏
  • 举报
回复
md5是不可逆加密 看楼主代码,应该是将密码加密为md5而已 没看明白楼主还想怎样? 另外再说一下md5的用法: 1,用户注册,获得用户密码,用md5加密,存数据库 2,用户登陆,用户密码md5加密和数据库中相同用户的md5密码比较,相等则允许登陆,否则密码错误。
sinat_23909879 2014-11-25
  • 打赏
  • 举报
回复
用了 GetBytes 转数组 然后用来了16进制来转字符串 结果成为了 一个68字节的字符串 这个字符串怎么还原成md5呢?
winnowc 2014-11-25
  • 打赏
  • 举报
回复
看起来是想用Encoding.UTF8.GetBytes(password)把乱码的password还原成字节数组,然后再用5楼的方式转16进制字符串

110,538

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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