c# - WinRT 中的 Rijndael 解密

标签 c# encryption windows-runtime aes

我正在尝试编写一个解密字节数组的方法。

  • key 固定24字节

当我对数据进行实际解密时出现异常The supplied user buffer is not valid for the requested operation,我希望有人能帮助我!

        // Get the key and put into IBuffers

        IBuffer keyBuffer = CryptographicBuffer.CreateFromByteArray(cKey);
        IBuffer plainText = CryptographicBuffer.CreateFromByteArray(cData);
        byte[] decryptedData;

        // Setup an AES key, using AES in CBC mode and applying PKCS#7 padding on the input
        SymmetricKeyAlgorithmProvider aesProvider = SymmetricKeyAlgorithmProvider.OpenAlgorithm(SymmetricAlgorithmNames.AesEcbPkcs7);
        CryptographicKey aesKeySymm = aesProvider.CreateSymmetricKey(keyBuffer);


        // Decrypt the data and convert it to byte array

        // EXCEPTION ON THIS LINE: "The supplied user buffer is not valid for the requested operation."
        IBuffer decrypted = CryptographicEngine.Decrypt(aesKeySymm, plainText, null);
        CryptographicBuffer.CopyToByteArray(decrypted, out decryptedData);
        return decryptedData;

最佳答案

CBC 需要一个 IV(也是一个 IBuffer 用于 CryptographicEngine.encryptCryptographicEngine.decrypt,所以你不能提供 null 。这只是为 decrypt 函数引用的 encrypt function 写下的。

关于c# - WinRT 中的 Rijndael 解密,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25251928/

相关文章:

Android——加密与解密

ssl - pem 证书中的私钥是如何加密的?

c# - 单击 GridView 查找所选行

c# - 如何读取多个文本文件并将其保存到一个文本文件中?

c# - Crystal Report 在查看报告之前验证数据库凭据

c# - 使用 ILGenerator.Emit 在另一个具有 out 参数的程序集中调用方法

python - 对称整数到整数加密

c# - 本地文件存储自动删除内容

javascript - Windows.Storage.KnownFolders.documentsLibrary.createFolderAsync 返回在断开连接的应用程序中找不到的网络路径

xaml - 在 FlipView 上禁用导航