코드를 따르고 올바른 것으로 알고 있지만 제대로 작동하지 않습니다. PHP의 Mcrpyt로 데이터를 인코딩 한 다음 openssl 명령 줄 도구로 디코딩하려고합니다. 내가 인코딩 된 메시지에 IV를 추가openssl 명령 줄 도구를 사용하여 데이터 암호 해독
/*
* Convert a normal ascii string to a hexadecimal string.
* Complement of hexToString().
*/
function stringToHex($str)
{
$hex_str = "";
for ($i = 0; $i < strlen($str); ++$i)
{
$hex_str .= sprintf("%02X", ord($str[$i]));
}
return $hex_str;
}
$iv = mcrypt_create_iv(mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC), MCRYPT_DEV_RANDOM);
$block_size = mcrypt_get_block_size("rijndael-128", "cbc");
$pad = $block_size - (strlen($data) % $block_size);
$data .= str_repeat(chr($pad), $pad);
$encrypted = mcrypt_encrypt(MCRYPT_RIJNDAEL_128, "1234567812345678", $data, MCRYPT_MODE_CBC, $iv);
$message = stringToHex($iv) . base64_encode($encrypted);
:
이 내 PHP 코드입니다. (사이즈 32)이 IV는 00000000000000000000000000000000입니다 예를 들어 말해, 그때 암호 해독에 대해 다음 명령을 사용하십시오 또한
openssl enc -d -aes-128-cbc -A -nosalt -K 31323334353637383132333435363738 -iv 00000000000000000000000000000000 -in file_in > file_out
가 1234567812345678 16 진수가 31323334353637383132333435363738.입니다 참고하지만이 같은 오류 메시지가 계속 :
을bad decrypt 1340:error:0606506D:digital envelope routines:EVP_DecryptFinal_ex:wrong final block length:./crypto/evp/evp_enc.c:454:
누구?
미리 감사드립니다. 모든 사랑, Jori.
아무도 없습니까? :-( 답변을 기다리는 중 – Jori
코드 예제를 작성해야합니다. 누락 된 stringToHex 함수는 분명하지만 코드를 테스트 할 수는 없습니다. –
아, 죄송합니다. 하지만 그것은 적절한 IV를 생성하기 때문에 문제가 있다고 생각하지 않습니다. 어쨌든 고마워! :-) – Jori