개발 Q&A

제목 CI 암호화 후, node.js에서 복호화
카테고리 JavaScript
글쓴이 smile_jax 작성시각 2018/07/24 18:40:57
댓글 : 2 추천 : 0 스크랩 : 0 조회수 : 13837   RSS

여러 예제들로 테스트 해봤는데, 여전히 오류 입니다.

복호화한 텍스트가 깨져나오는데, 잘못 복호화 된 것 같기도 하고, 해당 코드에 대한 이해도가 높지 않아서 도움을 요청 드립니다.

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

반드시 ci encryption을 사용하실 필요는 없습니다.

아래 URL 참고하세요.

https://gist.github.com/schakko/2628689

smile_jax / 2018/07/26 11:09:53 / 추천 0

댓글 보고 생각을 바꿔 openssl 방식 암호화로 변경하여 적용하였네요.

답변 감사합니다.