メッセージ文字列を定期的に復号化しています。複数の jsperf を調べた後、forge と stanford が cryptojs よりも高速であることに気付きました。古いモバイル デバイスをサポートする必要があるため、その余分な速度が必要なので、移行を試みています。
動作する crpto-js コードは次のとおりです。
var feed = message.data.msg;
var iv = CryptoJS.enc.Hex.parse(_iv);
var key = CryptoJS.enc.Hex.parse(_key);
var decrypted = CryptoJS.AES.decrypt(feed.substr(32), key, { iv: iv });
feed = decrypted.toString(CryptoJS.enc.Utf8);
そして今、非動作の鍛造コード:
var feed = message.data.msg;
var iv = forge.util.hexToBytes(_iv);
var key = forge.util.hexToBytes(_key);
var buffer = forge.util.createBuffer( feed.substr(32) );
var cipher = forge.aes.createDecryptionCipher(key);
cipher.start( iv );
cipher.update( buffer );
cipher.finish();
feed = cipher.output.toHex();
forge で復号化した後、ランダムな文字の寄せ集めが表示されます。コードをステップ実行する際に注目すべき唯一の点は、forge/aes.js の 969 行目の失敗です。
if(count > (Nb << 2)) {
rval = false;
}
起動して false を返します。
両方のライブラリが AES のデフォルトとして CBC を使用しているため、ここで途方に暮れているため、すべてが機能するはずです。