【问题标题】:Why does as3crypto say "Invalid padding value"?为什么 as3crypto 说“无效的填充值”?
【发布时间】:2010-09-01 02:42:45
【问题描述】:

as3crypto 中出现“Invalid padding value”错误的原因是什么?

Error: PKCS#5:unpad: Invalid padding value. expected [153], found [25]
    at com.hurlant.crypto.symmetric::PKCS5/unpad()
    at com.hurlant.crypto.symmetric::CTRMode/decrypt()
    at com.hurlant.crypto.symmetric::SimpleIVMode/decrypt()
    at com.mycompany.myproject::Application$/decrypt()
    ... (followed by the rest of my application stack)

我想我之前已经通过使用 SimpleIVMode 包装类确保加密数据前面带有初始化向量 (IV) 来解决这个问题。不过,在这种情况下,我已经在这样做了。

我没有使用 Crypto 类,因为最小化下载大小很重要。

有什么想法吗?

我的抽象代码(在Application 类中):

protected static var cipher:ICipher = 
    new SimpleIVMode(
        new CTRMode(
            new AESKey( Hex.toArray("53c12a8eb8612733ec817290580c3d") // not actual key
        ))
    );

public static function encrypt(d:ByteArray):ByteArray {
    d.position = 0;
    cipher.encrypt(d);
    d.position = 0;
    return d;
}

public static function decrypt(d:ByteArray):ByteArray {
    d.position = 0;
    cipher.decrypt(d); // THIS LINE THROWS
    d.position = 0;
    return d;
}

d.position = 0 的所有东西都是我的妄想症。

加密代码:

// we first have to serialize the object to a ByteArray, then encrypt that data.
var encryptedValue:ByteArray = new ByteArray();
encryptedValue.writeObject(objectToEncrypt);
encryptedValue.position = 0; // paranoia?
Application.encrypt(encryptedValue);
so.setProperty(key, encryptedValue); // save it in my SharedObject

现在是导致错误的代码:

var data:ByteArray = so.data[key]; // get the byte array out of storage.
trace(data.length); // Check that it's real... I get 553 bytes
Application.decrypt(data); // THIS LINE THROWS

【问题讨论】:

    标签: actionscript-3 as3crypto


    【解决方案1】:

    我认为您应该扩展 SharedObject 的内存大小,例如

    so.flush(1000000000000000);
    

    【讨论】:

    • 那么我认为你应该仔细检查算法
    猜你喜欢
    • 2021-05-22
    • 2010-12-20
    • 1970-01-01
    • 2017-11-11
    • 2010-09-05
    • 1970-01-01
    • 2021-04-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多