回答
我不確定你想要完成什麼,但一般來說:請開發應用程序,以便用戶密碼不能以任何方式以明文形式檢索(例如,無解碼功能)。因爲許多用戶在多個服務上使用相同的密碼,所以如果技術上可以查看用戶的密碼,我認爲這是不好的做法:如果服務(或您的託管公司)以某種方式無法保護,比如說數據庫與密碼+ mailadresses,這些用戶是公開的:這些憑據可能打開大門濫用在不同的應用程序/網站上的大門。簡而言之:我甚至不希望看起來對此負責。
正如上面的一些答案指出的那樣,在您的密碼系統/數據庫中使用安全散列算法是非常可取的。Hash函數是irrevirsible,這意味着:如果你做
valid_key = sha1(password + salt); // store in database when user chooses/changes password
,然後,如果你要的是驗證用戶的身份,你只是做一遍: 提供鹽(也可在數據庫,可以是用戶名和/或隨機值),然後重新計算哈希:
user_key = sha1(password_attempt + salt)
然後,您只需將user_key比作valid_key:
if(user_key == valid_key)
// authentication succesfull
else
// wrong password
這只是一個小例子,當然有許多不同的實現和哈希算法,這些只是基礎知識。
散列的另一個好處是:散列(你存儲在你的應用程序中,例如數據庫)永遠是相同的長度(sha1總是160位十六進制值)。
因此,您可以讓偏執狂用戶能夠創建一個瘋狂長度的密碼(如果他們喜歡的話),以及所有陌生字符(如反引號或空格)的kinsd,但它不會浪費任何額外的存儲空間。
希望我給你你需要的信息。當然,也許你已經知道散列等,只是尋找一個特定的散列函數,它可能產生了你在問題中提供的散列。在這種情況下,就忽略這個帖子;)
[編輯] 現在有更好的替代品,如PBKDF2,Bcrypt (see this question)甚至Scrypt。請考慮這些方案之一,因爲它們更安全,特別是對於較短的密碼。
我覺得是的base64算法
要編碼的密碼:
$密碼= BASE64_ENCODE($ string_enter_by_user);
爲了解碼密碼:
$密碼= BASE64_DECODE($ string_enter_by_user);
注意:您至少應該使用像MD5這樣的單向密碼方法,如果有一天有人訪問您的數據庫,您的所有用戶密碼將受到保護。唯一的缺點是你永遠不會知道用戶的密碼。 MD5加密也將總是32個字符長。
要使用MD5:
$密碼= MD5($ string_enter_by_user);
不知道你的用戶密碼不是缺點。 – geoffspear 2010-10-30 21:32:20
此外,建議在沒有鹽的情況下使用md5是相當不負責任的,即使它的數量級比使用基數64要好。 – geoffspear 2010-10-30 21:33:34
鹽問題歸因於密碼字典。更糟糕的是你可以做$ password = md5(md5(md5($ string))); – 2010-10-31 01:42:36
PHP有一堆內置的哈希函數,所以你可以使用這些。根據PHP參考,您可以使用md5
,sha1
或hash
函數。
請確保您在密碼之前密碼。鹽只是一個隨機數字添加到密碼,以防止彩虹表攻擊。確保鹽對每個用戶來說都是新的和隨機的。
因此,您的密碼數據庫應該包含三列:用戶名,鹽和散列。您可以通過使用存儲的鹽重複該過程並比較散列來驗證密碼。永遠不應將密碼存儲爲未加密或未加密。
您描述的格式看起來像base64,它不是加密或散列。請參閱其他答案以瞭解如何對base64進行編碼/解碼,但請記住,如果您正在處理密碼,則需要正確的散列。
- 1. PHP - 解密加密密碼
- 2. 在PHP中解密密碼
- 3. 如何在android中加密和解密密碼
- 4. 如何在Perl CGI程序中加密和解密密碼?
- 5. 如何?在ASP.NET中加密和解密用戶成員密碼
- 6. PHP加密和VB.net解密
- 7. 在PHP中加密和JS解密 - AES256
- 8. PHP解密密碼
- 9. 使用Jasypt加密和解密密碼
- 10. 試圖加密和解密vigenere密碼
- 11. 加密和解密密碼的WebSphere
- 12. 加密在iPhone和解密在PHP
- 13. RSA解密加密++在PHP
- 14. 如何解密用crypt加密的PHP密碼字符串?
- 15. 在JSP中加密,在PHP中解密
- 16. 如何在javascript中實現凱撒密碼加密/解密
- 17. 加密和解密
- 18. 加密和解密
- 19. 加密和解密
- 20. 加密和解密
- 21. PHP和Java加密和解密例程
- 22. 在PHP中使用密鑰加密和解密使用密鑰的PHP文件
- 23. 加密和解密在iphonesdk
- 24. 在Selenium Webdriver中加密和解密密碼
- 25. 如何在MVC5中解密密碼?
- 26. 如何在c中解密密碼#
- 27. RSA加密在PHP中解密.NET
- 28. AES加密在PHP中的OpenSSL解密
- 29. RSA加密,解密PHP
- 30. C#加密到PHP解密
我認爲這看起來像Base64編碼 - 請參閱http://php.net/manual/en/function.base64-encode.php。它的*不*加密,只是編碼。對於應用程序,通常不會存儲實際的密碼,但是密碼不可逆(原則上)SHA或MD5散列。 – 2010-10-30 21:22:50
請不要讓密碼在您的網站上解碼。並且一定要包括鹽。使密碼可解碼是非常不負責任的,並且沒有必要解碼某人的密碼的理由。當有人丟失密碼時,只需重置密碼。 – polyhedron 2010-10-30 21:51:24