***100分,初学,不知道“不可逆加密”如何用,请高人指点一下。感激不尽^_^
以下是,在网上看到的。
这个是实现不可逆加密的,说是存密码比较适合,但是我想“它都不可逆了,还怎么比对输入的密码与数据库的数码是否相同呢??”
/// <summary>
/// 对字符串进行加密(不可逆)
/// </summary>
/// <param name= "Password "> 要加密的字符串 </param>
/// <param name= "Format "> 加密方式,0 is SHA1,1 is MD5 </param>
/// <returns> </returns>
public static string NoneEncrypt(string Password, int Format)
{
string strResult = " ";
switch (Format)
{
case 0:
strResult = FormsAuthentication.HashPasswordForStoringInConfigFile(Password, "SHA1 ");
break;
case 1:
strResult = FormsAuthentication.HashPasswordForStoringInConfigFile(Password, "MD5 ");
break;
default:
strResult = Password;
break;
}
return strResult;
}
并且这段代码也没有给解密的方法,谁会用它啊。
请高人,指出我说的对不,如果不对,请说明下。并给出上方法对应的解密方法。
[解决办法]
这个是实现不可逆加密的,说是存密码比较适合,但是我想“它都不可逆了,还怎么比对输入的密码与数据库的数码是否相同呢??”
==========
将欲验证的密码用同样的加密算法加密然后与数据库中的值比较
[解决办法]
不可逆加密就是只能加密不能解密了.
------解决方案--------------------
首先替楼主澄清一个概念。
加密必有解密,否则不能称之为加密。
而所谓的“不可逆加密”,或者“单向加密”其实有另一个名称,叫做散列。比如Md5就是一种散列。
这种散列的方法我觉得一般也只适用于用户表里的密码,使用方式是这样:存密码的时候,把从前台得到的密码,经过散列存入数据库,这个过程是不可逆的;然后判断的时候,把从前台的得到字符串也散列,然后与数据库里的相判断,如果相同:密码正确,如果不同:密码错误。但是这种方式无法取回密码,只能用忘记密码重新设定。
有的时候如果对保密程度要求高,我还是倾向于两次加密,第一次是双向的,第二次是散列。
[解决办法]
一般找回密码也不要找回旧密码,要不就制作一个新密码发给他,要不就给他个新页面自己去重新修改新密码;
[解决办法]
一般这种单向加密的,适用于安全度要求较高的环境,如公司内部的人力资源、工资系统
方法
1、取加密后的值与数据中原加密值比较
2、若忘了密码,可通过变通方法解决,如重置一下,给其默认密码
[解决办法]
对要比较的数据加密后再进行比较
[解决办法]
不可逆加密说白了,就是加密后,不能再解密回去
所以,这就是为什么很多论坛什么的,只给你提供修改密码的机会,不能找回密码
LZ用不可逆加密,例如登录的时候,把加密后的密码和数据库去比对就行了
[解决办法]
和MD5一样用,把两个数据都加密,再对比加密文件是否一样。
用户修改密码,管理员修改一个密码给其发过去,就OK
