source

암호화 및 복호화, md5

factcode 2022. 9. 11. 17:10
반응형

암호화 및 복호화, md5

코드를 사용하고 있다$enrypt=md5($pass)삽입$encrypt데이터베이스로 이동합니다.해독할 방법을 찾고 싶어요복호화 소프트웨어를 사용해 봤지만 해시는 정확히 16바이트여야 한다고 나와 있습니다.암호를 해독하거나 16바이트 md5 해시를 만드는 방법이 있습니까?

해시는 다음과 같습니다.c4ca4238a0b923820dcc

이미 설명한 바와 같이 MD5의 복호화는 자원 집약적이고 실용적이지 않으며 비윤리적인 무차별적인 해킹과 같은 시도를 하지 않으면 불가능합니다.

단, 다음과 같은 방법으로 패스워드 등을 안전하게 암호화/복호화할 수 있습니다.

$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 );
}

소금을 사용한 enciped 방식을 사용하는 것이 더 안전하지만 MD5 해시를 사용하는 것만으로 다음 단계로 넘어가는 것이 좋습니다.

MD5를 복호화할 방법은 없습니다.복호화 방법은 있지만 합리적인 방법은 없습니다.그게 요점이야.

다른 사용자가 올바른 비밀번호를 입력했는지 확인하려면 사용자가 입력한 비밀번호에 관계없이 MD5를 사용하여 데이터베이스에 저장된 비밀번호와 일치하는지 확인해야 합니다.

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

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

이 질문에는 PHP 태그가 붙어 있습니다.하지만 많은 사람들이 현재 라라벨 프레임워크를 사용하고 있다.그것은 미래에 누군가에게 도움이 될 것이다.그래서 내가 라라벨을 대신하는 거야내부 기능을 사용하면 암호화 및 복호화가 더 쉬워집니다.

$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);

주의: config/app.php 파일의 key 옵션에서 16, 24 또는 32 문자의 랜덤 문자열을 설정하십시오.그렇지 않으면 암호화된 값은 안전하지 않습니다.

단, 인증에는 암호화 및 복호화를 사용하지 마십시오.해시 메이크를 사용하여 확인하는 것이 좋습니다.

패스워드를 데이터베이스에 저장하려면 패스워드의 해시를 작성한 후 저장합니다.

$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 
}

생성된 해시의 암호를 해독할 수 없습니다.암호화 중에 사용된 값을 해독하려면 모든 정보가 필요합니다.

알고리즘을 사용하여 암호화 및 복호화할 수 있습니다.

JavaScript AES 암호화 및 복호화(Advanced Encryption Standard)

해시의 암호를 해독할 수 없습니다. 이 항목을 확인하십시오.

암호화 및 암호해제를 수행할 경우 데이터베이스의 양방향 암호화 기능(MySQL의 경우)을 사용합니다.

단, 패스워드 저장에는 CRYPT_BLOWFISH 알고리즘을 추천합니다.http://php.net/manual/en/function.crypt.php 및 http://us2.php.net/manual/en/function.password-hash.php을 참조하십시오.

★★★의 crypt()- 능 - -

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

password_hashPHP 5.5는 PHP 5.5입니다.

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

비밀번호를 저장한 후 다시 해시하여 저장된 값과 비교하여 사용자가 올바른 비밀번호를 입력했는지 확인할 수 있습니다.

언급URL : https://stackoverflow.com/questions/15194663/encrypt-and-decrypt-md5

반응형