我正在尝试编写一个解密字节数组的方法。
- 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.encrypt
和 CryptographicEngine.decrypt
,所以你不能提供 null
。这只是为 decrypt
函数引用的 encrypt
function 写下的。
关于c# - WinRT 中的 Rijndael 解密,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25251928/