PHP 7.2에서 Mcrypt 제거 준비
PHPPHP 7.2에서 Mcrypt 제거 준비
따라서 mcrypt로 이동하는 시간은 PHP 7.2로 변경됩니다. 물론 대안이 있습니다 : openssl.
mcrypt에서 openssl로 전환하기가 어려우며 AES 256 CBC를 사용하고 IV를 보존하는 것이 어렵습니다. 나는 암호학에 익숙하지 않으므로 모든 것을 실제로 알지는 못한다. 그러나 나는 기본을 이해한다.
다음 코드가 있다고 가정 해 봅시다.
function encrypt($masterPassword, $data)
{
$keySize = mcrypt_get_key_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_CBC);
$ivSize = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_CBC);
$iv = mcrypt_create_iv($ivSize, MCRYPT_DEV_URANDOM);
$key = mb_substr(hash('SHA256', $masterPassword), 0, $keySize);
$encrypted = mcrypt_encrypt(MCRYPT_RIJNDAEL_256, $key, $data, MCRYPT_MODE_CBC, $iv);
return base64_encode($iv . $encrypted);
}
function decrypt($masterPassword, $base64)
{
$keySize = mcrypt_get_key_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_CBC);
$ivSize = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_CBC);
$key = mb_substr(hash('SHA256', $masterPassword), 0, $keySize);
$data = base64_decode($base64);
$iv = substr($data, 0, $ivSize);
$encrypted = substr($data, $ivSize, strlen($data));
$decrypted = mcrypt_decrypt(MCRYPT_RIJNDAEL_256, $key, $encrypted, MCRYPT_MODE_CBC, $iv);
return trim($decrypted);
}
이 코드를 mcrypt 대신 openssl을 사용하도록 "변환"할 수 있습니까?
해결법
-
==============================
1.Rijndael-256은 AES-256이 아니며 OpenSSL 확장은 Rijndael-256을 지원하지 않기 때문에 변환 할 수 없습니다. AES-256은 256 비트 (32 바이트) 키가있는 Rijndael-128입니다.
Rijndael-256은 AES-256이 아니며 OpenSSL 확장은 Rijndael-256을 지원하지 않기 때문에 변환 할 수 없습니다. AES-256은 256 비트 (32 바이트) 키가있는 Rijndael-128입니다.
불행히도 모든 데이터를 다시 암호화해야합니다.
편집 : 또한, 당신이 현재 사용하고있는 계획은 몇 가지 문제가 있습니다 :
좋은 소식은 OpenSSL이 PKCS # 5 패딩을 자동으로 수행하지만 더 나아가서 defuse / php-encryption과 같은 견고한 암호화 라이브러리를 사용해야한다는 것입니다.
from https://stackoverflow.com/questions/42696657/preparing-for-removal-of-mcrypt-in-php-7-2 by cc-by-sa and MIT license
'PHP' 카테고리의 다른 글
PHP 스크립트를 독립 실행 형 Windows 실행 파일로 변환 (0) | 2018.09.12 |
---|---|
각 사용자에 대해 자동으로 하위 도메인을 만들도록 PHP를 설정하는 방법은 무엇입니까? (0) | 2018.09.12 |
PHP 평등 (== double equals)과 ID (=== triple equals) 비교 연산자는 어떻게 다른가요? (0) | 2018.09.11 |
하이픈으로 연결된 이름을 가진 SimpleXML 노드 읽기 (0) | 2018.09.11 |
method = "post"enctype = "text / plain"은 호환되지 않습니까? (0) | 2018.09.11 |