forgeによるAES-CBC暗号化

909 ワード

公式サイトの例(cryptoDataハを自己補完)ランダムに生成された16ビットkeyとiv(補位用)
function encryptByForge() {
        var key = forge.random.getBytesSync(16);
        var iv = forge.random.getBytesSync(16);
        var cipher = forge.cipher.createCipher('AES-CBC', key);
        cipher.start({
            iv: iv
        });
        cipher.update(forge.util.createBuffer(JSON.stringify(cryptoData)));
        cipher.finish();
        // outputs encrypted hex
        return forge.util.encode64(cipher.output.getBytes());
    }

crypto-jsの結果と異なる場合は、公式サイトのoutputを試してみてください.toHexをgetBytesに変換してbase 64で符号化する.
keyとivが指定されたkeyがserver base 64のバイナリ符号化のために送信されたivが16でランダム文字列がserverに返信される場合
const keyBytes = forge.util.createBuffer(forge.util.decode64(key), 'binary').getBytes(16);
const encodeIv = forge.util.encodeUtf8(iv);

キーを16ビットbytesに変換し、ivに対応するencodeUtf 8操作を行えばよい