在数据库上保护明文密码

时间:2016-08-27 09:36:25

标签: php mysql passwords password-protection password-encryption

出于内部原因,我需要在数据库中存储第三方帐户的密码,因此我无法真正使用哈希,因为我无法轻易地从中恢复密码。

有没有办法加密明文密码,以便潜在的黑客即使拥有mysql表也无法轻易检索密码,但我仍然可以解密它以查看其原始形式?

1 个答案:

答案 0 :(得分:1)

解密密码不是最佳做法。但是,如果您的要求是而不是简单地使用字符串的任何加密或解密方法。

我最近使用了以下函数来加密或解密字符串。用于保护URL。您还可以使用此加密或解密功能在使用GET方法请求时保护URL。

<?php
define("ENCRYPTION_KEY", "ABCDEFGHIJKLabcdefghijklm!@#$%^&*");
$string = "Plain Text";

echo $encrypted = encrypt($string, ENCRYPTION_KEY);
echo "<br />";
echo $decrypted = decrypt($encrypted, ENCRYPTION_KEY);

// this function will return encrypted string
function encrypt($pure_string, $encryption_key) {
    $iv_size = mcrypt_get_iv_size(MCRYPT_BLOWFISH, MCRYPT_MODE_ECB);
    $iv = mcrypt_create_iv($iv_size, MCRYPT_RAND);
    $encrypted_string = mcrypt_encrypt(MCRYPT_BLOWFISH, $encryption_key, utf8_encode($pure_string), MCRYPT_MODE_ECB, $iv);
    return $encrypted_string;
}

// this function will return encrypted string
function decrypt($encrypted_string, $encryption_key) {
    $iv_size = mcrypt_get_iv_size(MCRYPT_BLOWFISH, MCRYPT_MODE_ECB);
    $iv = mcrypt_create_iv($iv_size, MCRYPT_RAND);
    $decrypted_string = mcrypt_decrypt(MCRYPT_BLOWFISH, $encryption_key, $encrypted_string, MCRYPT_MODE_ECB, $iv);
    return $decrypted_string;
}
?>
  

因此,为了您的目的,使用此加密函数将纯文本存储在数据库中   并使用其他功能检索它。