作者hotball (哲哲鱼)
看板C_and_CPP
标题Re: 一个编码的问题
时间Tue May 2 18:09:33 2000
※ 引述《HLight (小光,尤加利)》之铭言:
: 就我所知,
: 一些系统密码储存的方式是用加密过的方式储存,
: password_encoded = some_encoder(password);
: 储存在资料库中的 password_encoded 无法被解码,
: 那麽如果要比较一个人新输入的密码 password' 与原来的密码 password 是否相同,
: 是利用这两个密码加密以後的资料是否相同做确认,
: password'_encoded = some_encoder(password');
: if(password_encoded == password'_encoded) pass the password check.
: 像 unix 系统就有提供系统呼叫可以做加密的动作,
: 可是我并不是在 unix 底下工作,
: 所以我想自己写一个简便的加密方式,
: 我希望的要求是,
: 1.很简单很简单,尽量可以在十分钟内可以写出来的方法,
: 2.只要管理者无法一眼就从加密过的密码看出原来的密码就好,
: 3.加密过的字串可以储存在资料库内,(我不晓得资料库有没有特殊字元会出状况)
: 当然,
: 最好是连程式设计师看到程式都解不出来,
: 不过这样的方法一定很复杂,
: 其实不用这麽麻烦,
: 只要解密有点麻烦就好了,
: 我要防范的又不是什麽超级骇客,
: 只是要让大家觉得密码管理很安全,
: 求个心安罢了。
你要的应该是「不能解密」吧!那就要看你是在什麽环境下做了。
基本上,UNIX 和 win32 都有加密用的 API,你可以直接用类似 DES 的加密方式。
一个简单的做法,是拿 password 把随便一段资料连续加密 25 次。这样就可以得
到一个还不错的 one-way hash function 了。
或是你也可以自己去找一些 one-way hash function 的程式,应该不难找到。
现在公开世界中最有效的 one-way hash function 应该就是 SHA1 了。到网路上
找一下 source code 应该可以找到。
--
※ 发信站: 批踢踢实业坊(ptt.twbbs.org)
◆ From: ken.csie.ntu.edu.tw