암호화를 위해 Mcrypt 대신 OpenSSL 구현
현재 데이터 암호화를 위해 Mcrypt를 활용하는 PHP 애플리케이션에서는 다음을 대체할 필요가 있습니다. OpenSSL을 사용한 Mcrypt. 원래 구현에서는 ECB 모드에서 복어 암호를 사용했지만 Mcrypt를 OpenSSL로 교체하면 암호화 결과와 필요한 IV 길이가 다르기 때문에 문제가 발생합니다.
불일치 이해
둘 다 암호화 함수인 mcrypt_encrypt와 openssl_encrypt는 서로 다른 결과를 생성합니다. 또한 mcrypt에는 Blowfish-ecb에 대해 56바이트 IV가 필요한 반면, openssl은 길이가 0인 IV를 사용합니다. 이러한 차이점은 Mcrypt(PKCS#5) 및 OpenSSL(PKCS#7)에서 사용하는 다양한 패딩 알고리즘에서 비롯됩니다.
암호화 차이점 해결
암호화 불일치를 완화하려면 , mcrypt로 암호화하기 전에 PKCS#7 패딩을 사용한 데이터 수동 패딩이 필요합니다. 이는 OpenSSL에서 사용하는 패딩 알고리즘과의 호환성을 보장합니다. 다음 예에서는 이 접근 방식을 보여줍니다.
$key = "anotherpassword1"; $str = "does it work 12"; $enc = mcrypt_encrypt(MCRYPT_BLOWFISH, $key, $str."", MCRYPT_MODE_ECB); $dec = mcrypt_decrypt(MCRYPT_BLOWFISH, $key, $enc, MCRYPT_MODE_ECB); echo(bin2hex($enc).PHP_EOL); // Encrypted data var_dump($dec); // Decrypted data $enc = openssl_encrypt($str, 'bf-ecb', $key, true); $dec = openssl_decrypt($enc, 'bf-ecb', $key, true); echo(bin2hex($enc).PHP_EOL); // Encrypted data var_dump($dec); // Decrypted data
마이그레이션 고려 사항
OpenSSL을 사용하여 Mcrypt로 암호화된 데이터를 해독하는 것은 비실용적이므로 유일한 해결책은 데이터. 이전에 암호화된 모든 데이터는 OpenSSL을 사용하여 다시 암호화해야 하므로 마이그레이션에 상당한 노력이 필요합니다.
위 내용은 PHP에서 데이터 암호화를 위해 Mcrypt에서 OpenSSL로 마이그레이션하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!