이 질문은 파트 2를 my previous question으로 돕습니다.
나는 유사한 질문을 가진 다른 스레드를 보았지만 PHP (즉, mcrypt 제거)의 최근 변경으로 인해 2017/18에서 OpenSSL을 사용하는 것이 가장 좋은 방법에 대한 조언을 구하고 있습니다.터미널에서 PHP로 생성 된 OpenSSL 문자열의 암호 해독
저는 PHP 스크립트에서 다음 기능을 고안했습니다. 일반 텍스트 문자열을 가져 와서 암호화합니다.
<?php
function encrypt($myString) {
$data = $myString;
$key = 'B374A26A71490437AA024E4FADD5B497FDFF1A8EA6FF12F6FB65AF2720B59CCF';
$iv = '61736466673534336173646667353433';
$encrypted = openssl_encrypt($data, 'AES-256-CBC', $key, 0, hex2bin($iv));
return $encrypted;
}
?>
결과 : 6Q7DM7VGEeJdnGf2h9k1Kg의 ==
내 질문은 매우 간단합니다 : 그것의 일반 텍스트로 다시 위의 결과를 돌려 터미널 해독 상응하는 무엇입니까? 에서 (이 encrypted
설정 그대로 작동하는 동안, 그러나
set encKey to "B374A26A71490437AA024E4FADD5B497FDFF1A8EA6FF12F6FB65AF2720B59CCF"
set encIV to "61736466673534336173646667353433"
set stringToEnc to "my plain text string"
set encrypted to (do shell script "echo '" & stringToEnc & "' | openssl enc -aes-256-cbc -a -K " & encKey & " -iv " & encIV)
set decrypted to (do shell script "echo '" & encrypted & "' | openssl enc -aes-256-cbc -a -d -K " & encKey & " -iv " & encIV)
:
지금까지 내가 (빠른 변수 조작에 대한) 애플 스크립트에서 다음 터미널 명령을 사용할 수있게했지만 do shell script
내용은 터미널 코드 PHP 함수의 출력 위의 스크립트가),이 오류가 발생합니다 :
bad decrypt 140735624655752:error:06065064:digital envelope routines:EVP_DecryptFinal_ex:bad decrypt:/BuildRoot/Library/Caches/com.apple.xbs/Sources/libressl/libressl-22/libressl/crypto/evp/evp_enc.c:529:
가 SO에 this, that 및 이와 유사한 질문에 여기 공부 한을, 나는 의아해 WH 오전 y 오류가 계속 발생합니다. 나는 그것이 key
과 iv
(내가 PHP에서 hex2bin()
을 사용했음을 노트) 인코딩 때문에 사용하지 않으면 다른 결과가 나올 것이라고 생각한다.
내 터미널 명령에 무엇이 누락 되었습니까? 누군가가 암호 해독을 해결하는 데 도움을 줄 수 있다면 도움을 주시면 감사하겠습니다.