簡體   English   中英

解密php中的密碼

[英]Decrypt password in php

如何解密ms-SQL數據庫中的純文本密碼?

$encrypted_password="k??aU?????y-??N???tDRz????{?4R???G?aS4t?T";  
$salt = "611233880";

因此,我需要解密密碼,以便使用md5加密插入其他數據庫。

我使用了這段代碼,但沒有成功

$iv2 = '';
 for($i=0;$i<16;$i++){
    $iv2 .= "\0";
 }
 $plain_text_CBC = mcrypt_decrypt(MCRYPT_RIJNDAEL_128, $salt, $encrypted_password, MCRYPT_MODE_CBC, $iv2);
 var_dump($plain_text_CBC);
 $plaintext = openssl_decrypt($encrypted_password, 'AES-256-CBC', $salt, 0, $iv2);
 var_dump($plaintext);

需要幫忙

加密(或散列)密碼背后的想法是,這是一種單向操作。 不太像切碎,但這就是想法。 如果采用完全相同的輸入並將其切碎,則應該獲得完全相同的輸出。 您可能無法從中重構輸入,但是可以通過查看輸出來確認某人給了您正確的輸入。

原則上已經知道某些弱算法會被黑客入侵,您所要求的是不可能的。

應該沒有理由解密。 您始終可以執行兩次哈希操作-首先使用舊算法,然后使用新算法-然后與數據庫中的條目進行比較。

永遠不要存儲純文本(或弱加密)密碼。 只是問領英...

您不只是簡單地解密密碼。 應該將其散列,這意味着它是一種單向加密。

如果要更改密碼哈希實現,請使用以下方法。

當用戶正在登錄時,您將擁有可用的明文密碼。因此,您將必須在此處放置代碼以使用新算法重新哈希密碼。

如果您正在使用新的本機密碼哈希函數 (PHP版本> = 5.5),則可以使用password_needs_rehash 如果您使用較低的PHP版本,但仍> = 5.3.7,則可以使用userland實現將相同的API應用於密碼哈希函數。

因此,當用戶嘗試登錄且密碼需要重新哈希時,請檢查哈希是否與舊的哈希函數匹配,然后創建新哈希並將其保存到數據庫。 隨着時間的流逝,您將能夠遷移大多數用戶,然后您可以考慮一種解決方案,如果他們在遷移期間從未登錄,則可以使用強制密碼重置來遷移其余用戶庫。

首先,您通過2種不同的算法對數據進行加密。 為什么? 一種算法就足夠了。

答:您不能解密舊密碼。

解決方案:您應該加密寫入密碼字段中的數據,並將結果與​​數據庫中的數據進行比較。 如果它們相等,則將通過密碼檢查。

例如:

$login = mysqli_real_escape_string($_POST['login']);
$password = mysqli_real_escape_string($_POST['password']);
$password_hash = md5($input); // you can use there any other algorithm, just example

// make next query and control result
$sql = 'select count(id) from users where login = \'$login\' and password = \'$password_hash\'';

// now if there are 1 row with this login and same password hash let user log in to your site

如果以MVC結構編寫代碼,則可以使用函數n_decrypt()解密密碼。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM