>  기사  >  백엔드 개발  >  PHP에서 데이터 암호화를 위해 Mcrypt에서 OpenSSL로 마이그레이션하는 방법은 무엇입니까?

PHP에서 데이터 암호화를 위해 Mcrypt에서 OpenSSL로 마이그레이션하는 방법은 무엇입니까?

Susan Sarandon
Susan Sarandon원래의
2024-11-15 16:52:03404검색

How to Migrate from Mcrypt to OpenSSL for Data Encryption in PHP?

암호화를 위해 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.