| 제목 | CI 암호화 후, node.js에서 복호화 | ||
|---|---|---|---|
| 카테고리 | JavaScript | ||
| 글쓴이 | smile_jax | 작성시각 | 2018/07/24 18:40:57 | 
|  | |||
| 여러 예제들로 테스트 해봤는데, 여전히 오류 입니다. 복호화한 텍스트가 깨져나오는데, 잘못 복호화 된 것 같기도 하고, 해당 코드에 대한 이해도가 높지 않아서 도움을 요청 드립니다. CI php 코드 입니다.(키 텍스트는 config.php에 설정했습니다.) 
$this->load->library('encryption');
$this->encryption->initialize(
    array(
        'cipher' => 'aes-256',
        'mode' => 'cbc',
        'driver' => 'mcrypt'
    )
);
$ciphertext = $this->encryption->encrypt($usr_info);
 
 node.js 복호화 코드 1번 예 입니다. 아래 코드에 대한 복호화 결과는 텍스트가 깨저 나옵니다. (output 인코딩인 utf-8를 제거해도 같습니다.) 
var crypto = require('crypto');
var key = 'php에서 지정한 키 텍스트';
var buf = new Buffer(result.user_data, 'base64');
var iv = buf.slice(0, 16);
var crypt = buf.toString('base64', 16);
var decipher = crypto.createDecipheriv('aes-256-cbc', key, iv);
decipher.setAutoPadding(false);
var dec = decipher.update(crypt,'base64','utf-8');
dec += decipher.final('utf-8');
 node.js 복호화 코드 2번 예 입니다. 아래 코드에 대한 복호화 결과는 "Error: error:06065064:digital envelope routines:EVP_DecryptFinal_ex:bad decryp" 입니다. 
var crypto = require('crypto');
var decipher = crypto.createDecipher('aes-256-cbc', 'php에서 지정한 키 텍스트');
var encrypted = result.user_data;
var decrypted = decipher.update(encrypted, 'hex', 'utf8');
decrypted += decipher.final('utf8');
 
 | |||
| 다음글 | RESPONSE 에 상태값을 주는 방법이 있나요? (4) | ||
| 이전글 | DB 툴로 했을 때와 model에서 query 가 다릅... (4) | ||
| 
                                한대승(불의회상)
                                /
                                2018/07/25 10:55:48 /
                                추천
                                1
                             | 
| 
                                smile_jax
                                /
                                2018/07/26 11:09:53 /
                                추천
                                0
                             댓글 보고 생각을 바꿔 openssl 방식 암호화로 변경하여 적용하였네요. 답변 감사합니다. | 
반드시 ci encryption을 사용하실 필요는 없습니다.
아래 URL 참고하세요.
https://gist.github.com/schakko/2628689