프로그래밍

Node.js crypto des3 with zero padding

약올랑 2014. 9. 25. 12:01

Node.js에서 대표적인 암호화 라이브러리는 crypto이다.

setAutoPadding 함수를 이용해 내장 패딩 알고리즘을 켜고 끌 수 있어,

커스텀 패딩 알고리즘을 적용할 수 있다.

Zero 패딩 정도는 내장되어 있어도 좋았을텐데 없어, 간단하게 만들어 보았다.


var crypto = require('crypto');
console.log(crypto.getCiphers());
var key = new Buffer('1234567890@WWW@awrrrrrss', 'ascii');
var iv = new Buffer('12378900', 'ascii');
var plaintext = customPadding("123", 128, 0x0, 'hex');
var cipher = crypto.createCipheriv('des3', key, iv).setAutoPadding(false);
var ciph = cipher.update(plaintext, 'buffer', 'hex');
ciph += cipher.final('hex');
var decipher = crypto.createDecipheriv('des3', key, iv).setAutoPadding(false);
var txt = decipher.update(ciph, 'hex', 'utf8');
txt += decipher.final('utf8');
function customPadding(str, blockSize, padder, format) {
str = new Buffer(str, "utf8").toString(format);
//1 char = 8bits
var bitLength = str.length * 8;
if (bitLength < blockSize) {
for (var i = bitLength; i < blockSize; i += 8) {
str += padder;
}
} else if (bitLength > blockSize) {
while ((str.length * 8) % blockSize != 0) {
str += padder;
}
}
return new Buffer(str, format);
}
view raw crypto.des3.js hosted with ❤ by GitHub