我正在嘗試使用零填充的URL查詢字符串執行AES CBC加密。我正在使用NodeJS的核心加密模塊。這是用於與http://www.blackoutrugby.com/game/help.documentation.php#category=35這個簡單的NodeJS加密函數有什麼問題?
我有一個關鍵和四。當測試下面的函數時,我沒有收到完整的字符串。我相信這與填充有關,但我不確定如何正確應用它。
如果是填充,任何人都可以告訴我應該如何應用它?如果不是我哪裏錯了?這個用例中的cipher.final()也有意義嗎?
更新: 我現在已經包括cipher.final()和事情工作正常與二進制格式但base64給了我截斷的結果。 https://github.com/denishoctor/BlackoutRugbyNode/blob/master/crypto2.js是我完整的示例代碼。下面是加密功能:
function cryptoTest(data, key, iv, format) {
var cipher = crypto.createCipheriv('aes-128-cbc', key, iv);
var cipherChunks = [];
cipherChunks.push(cipher.update(data, 'utf8', format));
cipherChunks.push(cipher.final());
var decipher = crypto.createDecipheriv('aes-128-cbc', key, iv);
var plainChunks = [];
for (var i = 0;i < cipherChunks.length;i++) {
plainChunks.push(decipher.update(cipherChunks[i], format, 'utf8'));
}
plainChunks.push(decipher.final());
return {
"encrypted": cipherChunks.join(''),
"decrypted": plainChunks.join('')
};
}
感謝,
丹尼斯
謝謝你。這是一個很大的幫助。但是,當我添加base64編碼時,我得到一個截斷的結果!並且想法爲什麼? > – 2011-05-24 04:02:51
您的原始源代碼混合了output_encoding base64和binary。這是我的猜測。讓我以一致的base64來嘗試我的例子。 – 2011-05-24 04:18:31
我現在已經更新了這個問題,並有一個完整的示例@ https://github.com/denishoctor/BlackoutRugbyNode/blob/master/crypto2.js – 2011-05-24 04:35:38