개발! 딱 깔끔하고 센스있게!

PHP 는 TripleDes, PKCS7 과 ECBs 암호 화 / 복호화 를 사용 합 니 다. 본문

개발 스크랩 메모/PHP

PHP 는 TripleDes, PKCS7 과 ECBs 암호 화 / 복호화 를 사용 합 니 다.

렉사이 2020. 11. 27. 02:40

내 암호 함수 가 정상적으로 작 동 하지만 복호화 함수 가 올 바른 출력 을 내 도록 하 는 방법 을 모 르 겠 습 니 다.

다음은 나의 암호 함수:

function Encrypt($data, $secret) { //Generate a key from a hash $key = md5(utf8_encode($secret), true); //Take first 8 bytes of $key and append them to the end of $key. $key .= substr($key, 0, 8); //Pad for PKCS7 $blockSize = mcrypt_get_block_size('tripledes', 'ecb'); $len = strlen($data); $pad = $blockSize - ($len % $blockSize); $data .= str_repeat(chr($pad), $pad); //Encrypt data $encData = mcrypt_encrypt('tripledes', $key, $data, 'ecb'); return base64_encode($encData); } 

다음은 나의 복호화 함수:

function Decrypt($data, $secret) { $text = base64_decode($data); $data = mcrypt_decrypt('tripledes', $secret, $text, 'ecb'); $block = mcrypt_get_block_size('tripledes', 'ecb'); $pad = ord($data[($len = strlen($data)) - 1]); return substr($data, 0, strlen($data) - $pad); } 

현재 테스트 키 를 사용 하고 있 으 며 암호 화 를 시도 하고 있 습 니 다.

1234567.제 가 찾 고 있 는 암호 화 에서 Base64 로 출력 되 었 지만 복호화 하 러 갔 을 때 아무것도 되 돌아 오지 않 았 습 니 다 (공백 구역).

나 는 암호 화 / 복호화 에 그다지 정통 하지 않 기 때문에 당신 의 도움 에 매우 감사 드 립 니 다!!

대답 하 다.

제 질문 을 봐 주 셔 서 감사합니다.

나 는 내 가 이미 해결 했다 고 생각한다.

이것 은 나의 모든 해결 방안 이다.

비슷 한 문 제 를 가 진 다른 사람들 에 게 도움 을 주 었 으 면 합 니 다.

function Encrypt($data, $secret) { //Generate a key from a hash $key = md5(utf8_encode($secret), true); //Take first 8 bytes of $key and append them to the end of $key. $key .= substr($key, 0, 8); //Pad for PKCS7 $blockSize = mcrypt_get_block_size('tripledes', 'ecb'); $len = strlen($data); $pad = $blockSize - ($len % $blockSize); $data .= str_repeat(chr($pad), $pad); //Encrypt data $encData = mcrypt_encrypt('tripledes', $key, $data, 'ecb'); return base64_encode($encData); } 

이것 은 새로운 복호화 함수 입 니 다.

function Decrypt($data, $secret) { //Generate a key from a hash $key = md5(utf8_encode($secret), true); //Take first 8 bytes of $key and append them to the end of $key. $key .= substr($key, 0, 8); $data = base64_decode($data); $data = mcrypt_decrypt('tripledes', $key, $data, 'ecb'); $block = mcrypt_get_block_size('tripledes', 'ecb'); $len = strlen($data); $pad = ord($data[$len-1]); return substr($data, 0, strlen($data) - $pad); } 

my crypt decrypt 함수 가 실 행 될 때 까지 같은 코드 를 추가 해서 올 바른 형식 으로 키 를 만들어 야 합 니 다.

Comments