Re: 一個編碼的問題
※ 引述《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
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章