0

По внутренним причинам мне нужно хранить пароли для сторонних учетных записей в базе данных, поэтому я не могу использовать хэш, потому что я не смог бы легко восстановить пароль.Безопасные пароли открытого текста в базе данных

Есть ли способ зашифровать пароль открытого текста, чтобы потенциальный хакер не мог легко получить пароль, даже если у него была таблица mysql, но я все еще могу расшифровать его, чтобы увидеть его первоначальную форму?

+0

Зачем вам нужно восстановить пароль ?! –

+0

Прочтите это: https://www.troyhunt.com/lessons-in-website-security-anti/ –

+0

Поскольку это учетные записи на стороннем веб-сайте, и мне нужно иметь возможность входить в них при необходимости. – maddo7

ответ

1

Не рекомендуется расшифровывать пароли. Но если ваше требование - это , просто используйте любой метод шифрования или дешифрования строки.

Недавно я использовал функцию ниже для шифрования или дешифрования строки. Для защиты URL. Вы также можете использовать эту функцию шифрования или дешифрования для защиты URL-адреса при использовании запросов метода GET.

<?php 
define("ENCRYPTION_KEY", "[email protected]#$%^&*"); 
$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; 
} 
?> 

Так что для Вашей цели с помощью этой функции зашифрованного хранилища простого текста в базе данных и извлекать его с помощью другой функции.

+0

Режим ECB на самом деле никогда не является хорошим выбором, он вообще не использует IV, поэтому результат 'mcrypt_get_iv_size (MCRYPT_BLOWFISH, MCRYPT_MODE_ECB)' всегда будет равен нулю. – martinstoeckli

+0

Что бы вы посоветовали использовать? – maddo7