OPENSSL_ZERO_PADDING 문제 :
$string = mcrypt_encrypt(MCRYPT_3DES, $key, $message, MCRYPT_MODE_CBC, $iv);
내가 좋아하는 것은 openssl_encrypt
하나에 mcrypt_encrypt
전화를 변경하려면 이것을 미래에 증명할 것입니다.
$mode = 'des-ede3-cbc'
또는 $mode = '3DES';
및 $options = true
을 사용하면 더 비슷한 응답을 얻을 수 있지만 동일하지는 않습니다. 완벽한 일치를 얻기 위해 전화하는 다른 방법이 있습니까? Mcrypt 라이브러리에 대한
...
은 내가가 lorem-ipsum의 $message
+ $key
조합이 (base64_encoded) 받고 있어요, 그래서 하나 개의 함수를 믿기 시작하고 또는 다른 암호화하기 전에 약간 메시지를 패딩
OpenSSL에 대한
대 "Y + + JgMBdfI7ZYY3M9lJXCtb5Vgu rWvLBfjug2GLX7uo ="
"Y + JgMBdfI7ZYY3M9lJXCtb5Vgu + rWvLBvte4swdttHY ="
빈 문자열 (참OPENSSL_RAW_DATA, 또는 ) 결과를 OPENSSL_ZERO_PADDING을 통과 $ 옵션을 사용하지만, 1 아무것도하지만 전달 시도 ...
OPENSSL_ZERO_PADDING
도 OPENSSL_RAW_DATA | OPENSSL_ZERO_PADDING
작업을 사용하여 어느 ... :(
,536,다른 단서가 있습니까? "OpenSSL 1.0.2g 1 Mar 2016"을 사용하고 있습니다.
이미 this q &을 읽었지 만 도움이되지 않습니다. 패딩 문제가있는 onlyone이 아니지만 지금까지 해결 방법이 없습니다. (두 번째 대답은 정말
절대로 완벽하게 일치 시켜서는 안됩니다. 이것이 초기화 벡터의 용도입니다. ** 동일한 ** 알고리즘과 ** 동일한 ** 키를 사용하여 ** 동일한 ** 페이로드를 암호화 할 때마다 안전하고 싶다면 완전히 다른 출력을 얻어야합니다. 동일한 입력에 대해 동일한 출력을 얻으면 암호화가 약합니다. 그것이 암호화의 IV 포인트입니다. 암호화가되면 IV로 암호화 된 페이로드를 상대방에게 전달합니다. – Mjh
동일한 페이로드를 사용하고있는 경우 동일한 algo, 같은 IV; 나는 같은 출력을 얻어야한다고 생각한다. 각 호출마다 서로 다른 IV를 사용해야한다는 것에 신경 쓰지 마십시오. 두 호출 (mcrypt 및 openssl)에 동일한 IV를 사용하면 동일한 출력을 얻어야합니다. 맞습니까? 출력물 구걸이 동일하기 때문에 메시지 패딩과 관련 있다고 생각하기 시작했습니다. – yivi
모든 것이 동일하다면 동일한 출력을 얻고 있어야합니다. 'openssl_encrypt'에 대한 네 번째 매개 변수는 패딩을 제어합니다. 당신은'$ encrypted = openssl_encrypt ($ data, $ alg, $ key, OPENSSL_ZERO_PADDING, $ iv);로 암호화 할 수 있으며 같은 출력을 얻었는지 확인합니다. [www.php.net/openssl_encrypt](http://www.php.net/openssl_encrypt)에서, 네 번째 매개 변수를 사용하는 방법을 보려면 주석을 읽을 수 있습니다. – Mjh