Шифровать и расшифровывать md5 - программирование
Подтвердить что ты не робот

Шифровать и расшифровывать md5

Я использую код $enrypt=md5($pass) и вставляю $encrypt в базу данных. Я хочу узнать, как их расшифровать. Я попытался использовать дешифрующее программное обеспечение, но он говорит, что хэш должен быть ровно 16 байт. есть ли способ расшифровать его или сделать его 16-байтовым md5-хешем?

Мой хэш выглядит так: c4ca4238a0b923820dcc

4b9b3361

Ответ 1

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

Однако вы можете использовать что-то вроде этого, чтобы безопасно шифровать/расшифровывать пароли /etc:

$input = "SmackFactory";

$encrypted = encryptIt( $input );
$decrypted = decryptIt( $encrypted );

echo $encrypted . '<br />' . $decrypted;

function encryptIt( $q ) {
    $cryptKey  = 'qJB0rGtIn5UB1xG03efyCp';
    $qEncoded      = base64_encode( mcrypt_encrypt( MCRYPT_RIJNDAEL_256, md5( $cryptKey ), $q, MCRYPT_MODE_CBC, md5( md5( $cryptKey ) ) ) );
    return( $qEncoded );
}

function decryptIt( $q ) {
    $cryptKey  = 'qJB0rGtIn5UB1xG03efyCp';
    $qDecoded      = rtrim( mcrypt_decrypt( MCRYPT_RIJNDAEL_256, md5( $cryptKey ), base64_decode( $q ), MCRYPT_MODE_CBC, md5( md5( $cryptKey ) ) ), "\0");
    return( $qDecoded );
}

Использование encypted метода с солью будет еще более безопасным, но это было бы хорошим следующим шагом после использования MD5 хэша.

Ответ 2

Невозможно расшифровать MD5. Ну, есть, но нет разумного способа это сделать. Такого рода точка.

Чтобы проверить, вводит ли кто-либо правильный пароль, вам необходимо указать MD5 независимо от введенного пользователем и посмотреть, соответствует ли он тому, что у вас есть в базе данных.

Ответ 3

/* you  can match the exact string with table value*/

if(md5("string to match") == $res["hashstring"])
 echo "login correct";

Ответ 4

Этот вопрос помечен PHP. Но многие люди сейчас используют Laravel. Это может помочь кому-то в будущем. Вот почему я отвечаю за Ларавеля. Легче шифровать и расшифровывать с помощью внутренних функций.

$string = 'c4ca4238a0b923820dcc';
$encrypted = \Illuminate\Support\Facades\Crypt::encrypt($string);
$decrypted_string = \Illuminate\Support\Facades\Crypt::decrypt($encrypted);

var_dump($string);
var_dump($encrypted);
var_dump($decrypted_string);

Примечание. Обязательно установите случайную строку 16, 24 или 32 символа в ключевой вариант файла config/app.php. В противном случае зашифрованные значения не будет безопасным.

Но вы не должны использовать шифрование и расшифровку для аутентификации. Скорее вы должны использовать хеш-код и проверить.

Чтобы сохранить пароль в базе данных, введите хэш пароля и затем сохраните.

$password = Input::get('password_from_user'); 
$hashed = Hash::make($password); // save $hashed value

Чтобы проверить пароль, введите пароль из базы данных

// $user is database object
// $inputs is Input from user
if( \Illuminate\Support\Facades\Hash::check( $inputs['password'], $user['password']) == false) {
  // Password is not matching 
} else {
  // Password is matching 
}

Ответ 5

Хэши нельзя расшифровать проверить это.

Если вы хотите шифровать-расшифровать, используйте двухстороннюю функцию шифрования вашей базы данных, например AES_ENCRYPT (в MySQL).

Но я предложу алгоритм CRYPT_BLOWFISH для хранения пароля. Прочтите это http://php.net/manual/en/function.crypt.php и http://us2.php.net/manual/en/function.password-hash.php

Для Blowfish функцией crypt() -

crypt('String', '$2a$07$twentytwocharactersalt$');

password_hash будет введен в PHP 5.5.

$options = [
    'cost' => 7,
    'salt' => 'BCryptRequires22Chrcts',
];
password_hash("rasmuslerdorf", PASSWORD_BCRYPT, $options);

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

Ответ 6

Невозможно расшифровать созданный хэш MD5. Для расшифровки значения MD5 которое использовалось во время шифрования, вам нужна вся информация.

Вы можете использовать алгоритм AES для шифрования и дешифрования

JavaScript AES-шифрование и дешифрование (Advanced Encryption Standard)