2016-12-20 3 views
0

AES-CBC 알고리즘으로 소화되는 데이터에 PKCS#7 패딩을 적용해야합니다. 나는 forge lib를 사용한다. 여기에 내 현재 작업 코드 (패딩없이)입니다 : forge.js를 사용하여 PKCS # 7 패딩을 사용하여 AES-CBC로 메시지 암호화

// transform json data to bytes 
var data = {foo: 'bar'}; 
var stringData = JSON.stringify(data); 
var bytes = forge.util.createBuffer(stringData); 

// generate 16-byte vector iv 
var iv = forge.random.getBytesSync(16); 

// ciphering process 
var cipher = forge.cipher.createCipher('AES-CBC', key); 
cipher.start({iv: iv}); 
cipher.update(bytes); 
cipher.finish(); 
var encrypted = cipher.output; 

그래서 내가 aes 알고리즘에 전달하기 전에 내 bytes 변수에 16 바이트를 추가해야한다고 알고보기의 이론적 관점에서. 이런 종류의 작업이 forge lib에 내장되어 있습니까? 그렇지 않다면 누군가 메시지에 패딩을 적용하는 것을 도와 줄 수 있습니까?

답변

1

설명서에 언급되지 않았지만 AES-CBC의 기본 패딩은 PKCS # 7 인 것으로 보입니다. this threadcipherModes.js

modes.cbc.prototype.pad = function(input, options) { 
    // add PKCS#7 padding to block (each pad byte is the 
    // value of the number of pad bytes) 
+0

감사의 말 감사 : 나는 이것을 추가하여 readme 작성을 위해 PR을 만들었습니다. – Jacka