태그 글목록: crypto

Node Crypto 연습 (암복호화 모듈)

iOS 랑 데이터를 주고받아야 하는데, http로 할려다 보니까 암호화가 필요 했다. https 로 해도 일부 해결 되겠지만, 내친 김에 Node에 있는 함수들로 구현해봄. (그동안 너무 헬스블로그로 운영한듯 하기도 하고 😉

Node API Reference
– http://nodejs.org/api/crypto.html#crypto_class_cipher

자.. 이제 시작

var crypto = require("crypto");

function encrypt(text,key){
 /* 알고리즘과 암호화 key 값으로 셋팅된 클래스를 뱉는다 */
    var cipher = crypto.createCipher('aes-256-cbc',key); 

 /* 컨텐츠를 뱉고 */
    var encipheredContent = cipher.update(text,'utf8','hex'); 

 /* 최종 아웃풋을 hex 형태로 뱉게 한다*/
    encipheredContent += cipher.final('hex');

    return encipheredContent;
}

/*암호화나 복호화나 자세히 보면 비슷함*/
function decrypt(text,key){

    var decipher = crypto.createDecipher('aes-256-cbc',key);

    var decipheredPlaintext = decipher.update(text,'hex','utf8');

    decipheredPlaintext += decipher.final('utf8');

    return decipheredPlaintext;
}

/*이제 테스트 해봐야지*/
var key = "tHis_iS_privaTe_kEy";
var text = "우리는 민족중흥의 역사적 사명을 띄고 이땅에 태어 났다. 조상에 빛난 얼을 오늘에 되살려 안으로 자주독립 자세를 확립
하고 밖으로 인류공영에 이바지할 때다. 박정희 아자씨 시러요";
var hw = encrypt(text,key);
console.log("################### 인코딩 ##################");
console.log(hw);

console.log("################### 디코딩 ##################");
console.log( decrypt(hw,key) );

이제 iOS 랑 테스트 해볼 일만 남았네 ㅋ

(https://gist.github.com/3973544 에 저장)

P.S : 암호화 3가지 패턴에 대하여
(http://debop.egloos.com/2304757)

1. Hashing : 한방향으로 암호화후 비교만 가능
ex) MD5, SHA1, SHA256, SHA384, SHA512

2. Symmetric : 양방향 암복호화 가능 private key 사용
 ex) DES, TripleDES, Rijndael, RC2 

3. Asymmetric : 양방향 암복호화 가능 private,public key 사용
공인인증서에서 쓴단다.
ex)  DSA, RSA

 

  • Facebook
  • Google Plus
  • Twitter
  • LinkedIn
  • Pinterest
  • Tumblr
  • Instapaper
  • Delicious