第三方库CryptoES使用请教 急!

  • Creator 版本:

  • 目标平台:

  • 重现方式:

  • 首个报错:

  • 之前哪个版本是正常的:

  • 手机型号:

  • 手机浏览器:

  • 编辑器操作系统:

  • 重现概率:

远程文件通过Aes算法加密了本地通过arraybuffer方式加载到,然后通过CryptoEs.Aes.decrypt解密本来是看起来很顺畅的事情但是CryptoEs.Aes.decrypt()的第一个参数是个封装好的CryptoES.lib.cipherparams 里面各种参数实在搞不清楚参数的意义和对应关系,有没有用过这个库的大佬讲解一下

顶一下顶一下

第一个参数就是待解密的字符串

    private utf8decoder = new TextDecoder();
    private utf8encoder = new TextEncoder();

    private _aesMode = CryptoES.mode.CBC;
    private _aesPadding = CryptoES.pad.Pkcs7;

    private _aesKeyByte: CryptoES.lib.WordArray = null;
    private _ivKeyByte: CryptoES.lib.WordArray = null;

    public SetAesKey(aesKey: string) {
        let key = this.utf8encoder.encode(aesKey);
        this._aesKeyByte = CryptoES.lib.WordArray.create(key);
        this._ivKeyByte = CryptoES.lib.WordArray.create(key);
        // this._aesKeyByte = CryptoES.enc.Hex.parse(aesKey);
        // this._ivKeyByte = CryptoES.enc.Hex.parse(aesKey);
    }
    public AESEncrypt(buffer: ArrayBuffer): ArrayBuffer {
        let encryptedData = CryptoES.AES.encrypt(
            CryptoES.lib.WordArray.create(buffer),
            this._aesKeyByte,
            {
                mode: this._aesMode,
                padding: this._aesPadding,
                iv: this._ivKeyByte
            }
        );

        var strBase64 = encryptedData.ciphertext.toString(CryptoES.enc.Base64);
        let buf = Base64Help.Inst.decode(strBase64);
        return buf;
    }

public AESDecrypt(buffer: ArrayBuffer): ArrayBuffer {

        let decryptedData = CryptoES.AES.decrypt(

            CryptoES.lib.CipherParams.create({ciphertext: CryptoES.lib.WordArray.create(buffer)}),

            this._aesKeyByte,

            {

                mode: this._aesMode,

                padding: this._aesPadding,

                iv: this._ivKeyByte

            }

        );

        var strBase64 = decryptedData.toString(CryptoES.enc.Base64);

        let buf = Base64Help.Inst.decode(strBase64);

        return buf;

    }

this.utf8encoder(key)是把字符串转ArrayBuffer吗

private utf8decoder = new TextDecoder();
private utf8encoder = new TextEncoder();

我的key是一组16进制数组因为c++那边是unsigne char*,我看wordarray.create可以接受number[]将数组传入生成出来的wordarray作为key,但是解密结果就是不对请问直接用16进制number数组生成wordarray作为key有问题吗