0

as3crypto をダウンロードして、プロジェクトに統合しようとしています。デモで取得している復号化の結果と一致するように簡単なテストを実行しようとしています - http://crypto.hurlant.com/demo/しかし、上記のエラーが発生しています。

私は秘密鍵タブに取り組んでいます。私は AES、CBC、PKCS5 を使用しており、IV を先頭に追加しています。Key テキストと Cipher テキストは両方とも HEX に設定されています。

最初に暗号化を行い、次にキーと暗号テキストを関数にコピーして、復号化をテストして一致するかどうかを確認しました。SecretTab.mxml からコードを直接コピーし、ハードコードされた値を取得するように少し変更しました。

同じ値を使用して暗号化を解除する小さなプログラムを C# で作成しましたが、正常に動作します。

キーと暗号文を何度も確認しましたが、正しいです。

    public static function decrypt2():void 
    {
        // 2: get a key
        var k:String = Hex.fromString("e5693983c5c21e0f6191eb025d12803d6d17c5359994bf435b964cd0c107fc2c");
        var kdata:ByteArray = Hex.toArray(k);
        //trace(String.fromCharCode(kdata[0]));

        // 3: get an output
        var txt:String = Hex.fromString("691682969f1946a1465ccfe19d429ace4188ee254425caa7fa84db5b1fba44a77f1dedfba7a1ffe516cb0646638e28f8ae6422b3cd63d380b21f8b8dcfbe067a");
        var data:ByteArray = Hex.toArray(txt);

        // 1: get an algorithm..
        var name:String = "simple-aes-cbc";              

        var pad:IPad = new PKCS5; //:new NullPad;
        //var pad:IPad = new NullPad();
        var mode:ICipher = Crypto.getCipher(name, kdata, pad);
        pad.setBlockSize(mode.getBlockSize());
        // if an IV is there, set it.
         if (mode is IVMode) {
                trace("mode is IVMode");
                var ivmode:IVMode = mode as IVMode;
                //ivmode.IV = Hex.toArray(iv.text);
            }
        mode.decrypt(data);
        trace(Hex.fromArray(data));
    }
4

2 に答える 2

0

復号化する前に、データと IV の両方のバイト配列を明示的に設定する必要があります。名前に単純なフラグが使用されていても、as3crypto が問題を解決するとは思いません。

あなたの例の状態はわかりませんが、エラーはバイト配列が正しくないことを示しています。IV を明示的に設定した例。

var cipher:ICipher = Crypto.getCipher("aes256-cbc", keydata);;
var dataBA:ByteArray = Hex.toArray(Hex.fromString(data));
var data:ByteArray = Hex.toArray(Hex.fromString("some data"));
(cipher as IVMode).IV = Hex.toArray(Hex.fromString("some IV"));
cipher.decrypt(data);
于 2016-08-13T16:57:32.180 に答える