2013-10-23 2 views
1

나는 Encrypt 클래스를 사용하여 codeigniter에서 일부 데이터를 암호화하고 있으며 이것은 java 프로그램으로 전송되어 거기에서 디코드되어야합니다.CodeIgniter 클래스를 Java로 암호화

PHP 코드 :

SERVER_ENCRYPT_KEY
$this->load->library('encrypt'); 
    $this->encrypt->set_key(SERVER_ENCRYPT_KEY); 
    $this->encrypt->set_mode(MCRYPT_MODE_CFB); 
    $this->data = $this->encrypt->encode($this->input->post('data')); 

키입니다.

나는 이것을 발견했다 : MCrypt for Java 그러나 나는 그것을 만들 수 없었다. 이 작업을 수행 할 수있는 다른 라이브러리가 있습니까? 또는 MCrypt의 java 버전을 사용하여이를 수행하는 방법을 예로들 수 있습니다.

답변

1

나는 CI_Encrypt를 피하고 작은 변화로이 PHP-Java-AES-Encrypt을 사용하기로 결정했다 : 노이즈 추가 및 2 가지 유형의 키 사용. 또한 이전의 암호화 된 데이터를 새로운 형식으로 변환하는 도구를 만듭니다.

1

CI_Encrypt 클래스를 살펴보십시오. mcrypt 라이브러리를 호출하는 것 외에도 다양한 비표준적인 작업을 수행합니다. 예를 들어 자신이 발명 한 _add_cipher_noise 메소드를 통해 암호화 된 데이터를 실행합니다. 또한 암호화 된 형식이 다른 버전으로 변경되어 다시 발생할 수 있음을 나타냅니다.

codeignite 외부에서 암호화 된 데이터를 사용하려는 경우 codeignite 자체의 암호화 된 암호화 된 데이터 패키징과 같은 것을 사용하면 안됩니다.

+0

나는 암호화에 노이즈가 추가 된 것을 보았고 java에서도 동일한 작업을 수행했지만 codeigniter 외부에서 암호화 된 데이터를 사용했는지 궁금합니다. 나는이 문제를 해결하기 위해 + 10k 고객에게 다시 데이터를 다시 입력하라고 요청하지 않습니다. 하지만 결국에는 양쪽에서 맞춤 암호화 방법을 적용하게 될 것입니다. – adimoldovan

+0

codeigniter의 인코딩 호출에서 가져온 메시지는 자체 포함되어 있지 않습니다. 해독 할 때 암호화에 사용 된 암호를 먼저 알아야합니다. 사용자가'$ this-> encrypt-> set_cipher();'를 사용했을 수 있으며 메시지에서 그 값을 공제 할 수 없습니다. 또한 ** mcrypt **가 없으면 일부 다른 방법으로 변경됩니다.이 또한 처리해야합니다. –

+0

암호 용으로 디폴트 값'MCRYPT_RIJNDAEL_256'가 사용되고, mcrypt 모드에는'MCRYPT_MODE_CBC'가 사용됩니다. 또한 mcrypt가 설치됩니다. – adimoldovan

관련 문제