0

AES に CryptoJS ライブラリを使用する方法を理解しようとしていますが、ドキュメントがやや不足しています。

私は彼らの例に従いましたが、PyCrypto でエンコードしたものをデコードできないようです

私は次のようにフォーマットしました:

key = '0f3f0fe38eb5f216cb4ef0649f81d761'
ciphertext = 'Y+gwBI6R37Ko1lQmwZ57gg==FqUSqQ=='

暗号文には 2 つのコンポーネントがあります

iv: Y+gwBI6R37Ko1lQmwZ57gg==
encoded message: FqUSqQ==

以下のコードを実行してみましたが、うまくいきませんでした。コンソールに "" を記録します。「テスト」に解決されるはずです

var decrypted =CryptoJS.AES.decrypt(ciphertext, key);
console.log( decrypted.toString(CryptoJS.enc.Utf8) );

どんなポインタでも素晴らしいでしょう。ありがとう

4

2 に答える 2

0

私は CryptoJS を直接使用した経験はありませんが、他のさまざまな暗号化ライブラリについて長年の経験があります。ほとんどの場合、CryptoJS.AES.decrypt は、使用している暗号化テキスト形式とは異なる暗号化テキスト形式を想定しています。暗号文は、Base64 でエンコードされた 2 つの別個のエンティティを連結したものです。

Base64(IV) + Base64(Enc(メッセージ))

CryptoJS.AES.decrypt が、IV が暗号文の一部として指定されることを期待し (そうでない場合もあります)、Base64 でエンコードされた暗号文の入力をまったく期待している場合 (そうでない場合もあります)、次を渡してみます。

Base64( (バイナリ IV) + (バイナリ Enc(メッセージ)) )

CryptoJS のドキュメントを見て、私はあなたの不満を共有しています。しかし、手がかりを提供する可能性のある「手動で指定された IV」を使用した暗号化の例があります。

<script src="http://crypto-js.googlecode.com/svn/tags/3.1.2/build/rollups/aes.js"></script>
<script>
    var key = CryptoJS.enc.Hex.parse('000102030405060708090a0b0c0d0e0f');
    var iv  = CryptoJS.enc.Hex.parse('101112131415161718191a1b1c1d1e1f');

    var encrypted = CryptoJS.AES.encrypt("Message", key, { iv: iv });
</script>

申し訳ありませんが、これ以上お役に立てません-

于 2013-12-11T16:59:22.303 に答える