學習Joomla1--密碼加密方式

昨天才開始正式接觸Joomla,知道全球2.7%的網站用的是Joomla的模板。

今天查看了一下數據庫,發現用戶密碼非常長,而我之前學習的PHP加密方面,都是用md5這個函數的,所以就上網查了一下,主要內容如下:


Joomla對密碼的加密方式有很多種,有ssha、md5、base64等等,大多數使用默認的md5加密方式。

但如果你即使使用同樣的密碼加密後的結果還是不一樣的。原因是Jooma在加密的時候添加了一個隨即的key,這個key是隨即生成的,所以每次加密的結果都不一樣。

舉例:

如果Joomla的明文密碼是123456,加密後的結果是

6fa7069f6c2b4a7abc376669113acab8:cW2r7QqdGQrp2Rw9sbxCxN85nSek6tlV


可以很清楚的看到,加密後的字符串被“:”分成了兩段,這讓很多人認爲他不是md5。其實後面這段是key,在每次添加新用戶或修改密碼時,這一串key會隨機生成,前面的密碼時md5加密後的密碼,加密方法是:

md5(明文密碼+key)


如上面的密碼應該爲

6fa7069f6c2b4a7abc376669113acab8 == md5('123456cW2r7QqdGQrp2Rw9sbxCxN85nSek6tlV')

在驗證用戶密碼時也通過這個key做md5驗證即可。

生成這個key和加密密碼的函數分別爲getSalt()何getCryptedPassword()

他們在libraries/joomla/user/helper.php文件中剛被定義,在 libraries/joomla/user/user.php 的bind()方法中被調用。


PS:我查了一下bind()方法,發現沒有getSalt()函數,而是使用的是getRandomPassword()函數,可能是版本不同的原因。

來源網址:http://www.lamp99.com/joomla-user-password-generation-principle.html


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章