PHP 바이너리 1바이트씩 자르기

카테고리 없음 2015. 12. 19. 15:51 Posted by Relipmoc

파이썬 백엔드에서 json 데이터를 AES encrypt를 한 후에 base64로 인코딩해서 php 백엔드로 보낸 뒤, php에서 복호화해서 그 데이터를 사용하는 코드를 짜려고 했었다. 기본으로 전송하는 데이터가 AES encrypted data뿐만이었으면 별 상관없이 mcrypt에 던지면 됐겠지만 바이너리에 다른 것도 덧붙였더니 substring할 일이 생겼다. php에서는 파이썬처럼 [n:m] 하면 1바이트씩 잘리는 게 아니기 때문에 substr이 아닌 mb_substr을 써야한다고 들었지만, 이건 multibyte support일 뿐이고, 마지막 인자에  "8bit"을 던져줘야 정확히 1바이트씩 잘린다.


function aes_decrypt($string) {

$string = base64_decode($string);

$iv = "";

$options = mb_strcut($string, 0, 128, "8bit");

$string = mb_substr($string, 128, mb_strlen($string, "8bit")-128, "8bit");

$key = "";

return rtrim(mcrypt_decrypt(MCRYPT_RIJNDAEL_128, $key, $string, MCRYPT_MODE_CBC, $iv), "\0\3");

}


이처럼 말이다.



댓글을 달아 주세요

  1. YONGNAM 2016.01.02 00:41 신고  댓글주소  수정/삭제  댓글쓰기

    UTF-8 문자열 바이너리로 만들어서 1바이트씩 자르는거 그켬