密码验证程序

来源:百度知道 编辑:UC知道 时间:2024/05/25 13:46:28
首先声明 strcmp(PW,"123456")的不行!
我自己是这样想的 :
接收新密码经过变换后形成密文 保存在文件里,
密码验证时将接收的密码经过变换后与文件里的密文比较,
这样安全么?
如何防止更换文件里的密文被更换?

或者有其它什么好的方法? 给个思路也行!

楼主的说法是正确的。事实上这就银行用3DES的算法加密用户账号密码一样。一般做法是这样的:
1. 用户根据自己的意愿输入密码PIN(将保存在用户的头脑或用户认为安全的地方);
2. 用3DES的算法,对输入的密码进行运算,把得到的结果取前几位,术语把这几位称为PIN Offset;
3. PIN Offset将被保存在数据库里面,由PIN Offset无法倒推出PIN;
4. 电脑管理人员即使可以访问数据库,但仍然不可能获得用户的密码;因此不可能冒充客户;
5. 当用户要进行验证密码时,输入自己的PIN,然后经过3DES计算,得到PIN Offset',如果PIN Offset'
和PIN Offset相等,那么就认为客户的密码是正确的。

由此我们可知,3DES是一种单向运算,可以用它来进行密码验证。

3DES的源代码网上应该有很多,各种语言版本的都有。

防止被修改,在此给出两种方法供你参考。
1. 如果被修改了,那么当你用正确的密码去验证时,将会发现不能通过;
2. 用消息摘要,如MD5或SHA这样的算法,会得到一个key,将这个key保存在你认为安全的地方,
只要有人改动过文件,哪怕一个bit,当你再用MD5或SHA去计算,将会得到key',当比较key和key'
时,你会发现它们完全不同。

还有说得哲学一点,没有绝对的安全。