개발 Q&A

제목 Charset으로 인해 질문드립니다.
카테고리 PHP
글쓴이 손씨가문 작성시각 2018/02/23 10:11:15
댓글 : 3 추천 : 0 스크랩 : 0 조회수 : 9600   RSS

안녕하세요.

하다가 한글 부분에서 처리가 안되어서 질문을 드립니다.

 

암호화.txt(자바)

 

PHP소스.txt, StringEncrypter.txt는 PHP입니다.

 

자바에서 암호화(encrypt)를 하고 나서 PHP에서 인자값을 암호화된것을 받고(ajax_login)

StringEncrypter의 decrypter를 이용하여 복호화를 했는데요.(ivDecrypt)

 

영어와 숫자는 정상적으로 출력이 되는 것에 반해, 한글 출력이 안됩니다.

 

소스를 보면 자바쪽에서 EUC-KR인데 암호화과정에서는 UTF-8을 썼구요.

PHP쪽은 전부 UTF-8입니다.

 

mb_detect_encoding을 해도 EUC-KR, UTF-8이 번갈아 가며 떠서, 확인도 안되구요.........

혹시 잘못된 부분이 있을까요?...

첨부파일 암호화.txt (7.8 KB)
PHP소스.txt (1.7 KB)
StringEncrypter.txt (5.6 KB)
 다음글 o2o서비스를 개발하는중에 질문있습니다. (3)
 이전글 아파치 가상호스트와 ssl 로그파일 중복이 가능한가요? (2)

댓글

kaido / 2018/02/23 10:26:02 / 추천 0

비슷한 작업을 진행한적이 있었습니다.

단순히 한글만 안나오는게 문제가 아니라, 암호와 복호가 달라서 그럴 가능성이 높습니다.

[단순히 아예 안풀리는게 아니라 비슷하게 모듈과 옵션이 비슷하면 비슷하게 풀리지만 명확하게는 안풀리 케이스도 있습니다.]

 

java쪽 암호와 복호 테스트 하시고

php쪽 암호화 복호 테스트 해서 교차로 암호값이 서로 동일한지를 검증 하시는 수밖에 없습니다.

 

저도 뭔가 간단한 실수... 복호 순서 차이로 안맞았던걸로 기억합니다.

거기에  기본 padding 숫자  설정 차이가 있을수도 있구요.

 

또한  AES 관련 모듈도 여려종류라서 명확하게 java와 php 에서 사용한 모듈과 옵션이 같은지 체크해보셔야 합니다.

 

참고로 php7.2 이상에서는 더이상 encrypt 암호화를 모듈을 사용하실수 없습니다.

7.1에서부터 해당 함수 사용하면 경고로 나오고 7.2부터는 제거되었습니다.

대체하는 암호문이 있지만, 몇몇 모듈은 제거되었습니다.

손씨가문 / 2018/02/23 10:44:16 / 추천 0

암호화.txt 소스만 받고, ivDecrypt를 이용해서 풀라고만 전달을 받아서요. 

현재 버젼은 php5 버젼이라서 사용이 가능하지 않을까요?

padding이나 순서 문제가 크겠네요.... 

변종원(웅파) / 2018/02/23 11:42:11 / 추천 0
소스 내부에서 캐릭터셋 변경하는 부분이 없으니 적당한 부분에 추가하셔야겠네요.