내 문자열을 32 자 길이로 직접 채우면 코드가 작동합니다.
제 질문은 : openSSL 패드에 데이터를 저장하는 방법이 있습니까? 아니면 항상해야합니까?openssl_encrypt를 입력을 필요한 블록 크기로 채우려면 어떻게해야합니까?
작업 :
openssl_encrypt ("my baba is over the ocean1111111", 'AES-256-CBC', $MY_SECRET_KEY,OPENSSL_RAW_DATA|OPENSSL_ZERO_PADDING,$MY_IV);
작동하지 :
openssl_encrypt ("my baba is over the ocean", 'AES-256-CBC', $MY_SECRET_KEY,OPENSSL_RAW_DATA|OPENSSL_ZERO_PADDING,$MY_IV);
나는 현재 자기 패딩에 의해이 문제를 해결 :
누가 복음 공원으로$pad = 32 - (strlen("my baba is over the ocean") % 32);
$clear = "my baba is over the ocean" . str_repeat(chr($pad), $pad); //encrypt this string
AES에 필요한 블록 크기가 나는 기계를 혼란 0의 패딩의 선택을 추측하고있어 (16)이다. – jww
현재 패딩이없는 곳에 대신 패딩 구성표로 의도적으로 PKCS5를 사용할 수 있습니까? –
@ 루크 파크 (LukePark)는 그것을 할 수있는 방법으로 만들어져 있습니까? btw -> notice 나는 블럭을 0으로 채우지 않고 직접 덧붙인다. –