題主你可以使用 md5 或者 sha1 進行初步處理,但為了更加安全,請你同時加上兩個 salt,一個靜態 salt,一個動態的 salt。以 md5 為例:\x0d\x0a假設通過 POST 傳來的密碼為 $_POST['password'],在存入 DB 前先進行如下的操作:\x0d\x0a$password = hash('md5', $_POST['password'].$staticSalt.$dynamicSalt);\x0d\x0a\x0d\x0a為了保證動態 salt 的唯一性,可以這樣操作:\x0d\x0a$dynamicSalt = hash('md5', microtime());\x0d\x0a\x0d\x0a對于動態的 salt 可以與生成的密碼一起保存在 DB 中,而靜態 salt 則可以直接放在類文件中(例如定義為一個靜態屬性即可)。\x0d\x0a首先謝謝題主采納了我的答案,但是我之前的回答并不是最佳答案,之所以有此加密的想法源于自己所讀的源碼可能比較老,所以并沒使用上較新版本的加密方法,例如 bcrypt等。\x0d\x0a此外,第二點,感謝評論中幾位前輩的提點,已經明白設置靜態 salt 的意義并不大,生成一個較長的動態 salt 已然可以解決問題。\x0d\x0a\x0d\x0aLZ應該采用加鹽HASH。\x0d\x0a如何“腌制”密碼呢?\x0d\x0a=_,=\x0d\x0a正確的格式應該是,用戶password+動態的salt\x0d\x0a動態的salt不能像2L所說的,使用microtime,因為時間在某些情況下不夠隨機,而且是可能被猜解的。\x0d\x0a這里推薦一個我用的加鹽HASH\x0d\x0a$salt=base64_encode(mcrypt_create_iv(32,MCRYPT_DEV_RANDOM));\x0d\x0a$password=sha1($register_password.$salt);\x0d\x0a\x0d\x0a解釋:\x0d\x0a首先使用mcrypt,產生電腦隨機生成的,專門用戶加密的隨機數函數。\x0d\x0a第二步,把得到的隨機數通過base64加密,使其變長并且不利于猜解。\x0d\x0a第三步,把得出的鹽拼接到密碼的后面,再對其使用sha1進行哈希\x0d\x0a再把password存入到用戶的數據庫。\x0d\x0aPS:為何不用靜態的salt?沒有必要,使用一個動態隨機足夠長的鹽足矣。\x0d\x0a為何不用MD5?因為長度不夠。\x0d\x0a為何沒有使用多次HASH?因為這樣反而容易發生碰撞。\x0d\x0aHASH好之后怎么使用“腌制”好的密碼?\x0d\x0a用戶注冊-提交密碼-產生salt-腌制好的密碼存入數據庫-salt存入數據庫。\x0d\x0a用戶登錄-提交密碼-調用salt接到提交密碼的后面-進行HASH-調用之前注冊腌制好的密碼-對比HASH值是否和這個密碼相同
創新互聯建站從2013年開始,先為甘谷等服務建站,甘谷等地企業,進行企業商務咨詢服務。為甘谷企業網站制作PC+手機+微官網三網同步一站式服務解決您的所有建站問題。
今天有一個朋友問我thinkphp的這個問題,剛好百度搜索到你這個問題。已經解決。就幫你解答一下這個問題。
首先我嘗試在入口文件封裝一個加密函數,我用php des 加密,然后在配置文件config.php調用。然后在控制器里面使用,打印配置文件:dump(C());//輸出所有的配置文件信息, 雖然能看到正確的數據用戶名和密碼,但是會報錯。失敗告終。
我說一下我的解決方法。很簡單。
1:把配置文件里面的用戶名,密碼,數據庫名瞎寫一寫,別人看到你的代碼的配置文件看到的就是錯誤的數據庫名和密碼了。比如:
'DB_NAME' = 'SB', // 數據庫名
'DB_USER' = 'ni_da_ye', // 用戶名
'DB_PWD' = 'da_da_bi', // 密碼
在每個控制器文件里面。加入一段代碼。
比如你的IndexController.class.php文件。加下面的代碼。
/* 初始化方法*/
public function __construct(){
parent::__construct();
C("DB_NAME",decrypt('712349721937491237'));//數據庫名,
C('DB_USER',decrypt('712349721937491237'));//用戶名
C('DB_PWD',decrypt('712349721937491237'));//密碼
}
看清楚了嗎?
decrypt()這個函數就是我封裝的一個加密函數,親自測試沒有錯誤。可能會犧牲一些性能。但是保證了用戶名,密碼,數據庫名沒有泄露。甚至你都可以把數據庫連接地址也加密一下。希望能幫到你。
PHP加密函數可以考慮用des,aes這些可逆加密。別用什么md4,md5.
php將密碼存入數據庫,可以分內常見的4種方式:
1、直接md5加密存到到數據庫
2、md5兩次存到數據庫
3、對需要加密的字符串和一個常量 進行混淆加密
4、生成一個隨機的變量存到數據庫中,然后對需要加密的字符串和這個隨機變量加密
?php
$str="admin";?//需要加密的字符串
$str2="php";??//增加一個常量混淆?
$pass1=md5($str);
$pass2=md5(md5($str));
$pass3=md5($str.$str2);
echo?$pass1."br".$pass2."br".$pass3;
?
輸出:
第四種
$str="admin";?//需要加密的字符串
$encrypt=$row['encrypt'];?//?生成的?隨機加密字符串?存到數據庫中
$pass4=md5($str.$encrypt);
//??8db2ec7e9636f124e56f7eb4d7b7cc7e
標題名稱:php配置數據庫密碼加密 php數據庫密碼修改
文章起源:http://vcdvsql.cn/article42/dopjcec.html
成都網站建設公司_創新互聯,為您提供小程序開發、定制開發、商城網站、品牌網站建設、做網站、電子商務
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯