我正在开发Windows 8.1中的应用程序,我想要解密在“AES / CBC / PKCS5Padding”中加密的图像。
我使用了“SymmetricAlgorithmNames.AesCbcPkcs7”解密,但我收到错误“提供的用户缓冲区对请求的操作无效。(HRESULT异常:0x800706F8)”
请帮助我如何摆脱这个错误。
如果我通过拍摄正常图像检查了一个样本,我使用“SymmetricAlgorithmNames.AesCbcPkcs7”使用我的方法加密和解密它工作正常,但是使用“AES / CBC / PKCS5Padding”在服务器中加密的图像不是正确解密。
Uri dataUri = new Uri("ms-appx:///Assets/EncryptedImage.jpg");
StorageFile file = await StorageFile.GetFileFromApplicationUriAsync(dataUri);
string key = "123456";
IBuffer toDecryptBuffer = await FileIO.ReadBufferAsync(file)
SymmetricKeyAlgorithmProvider aesCbcPkcs7 =
SymmetricKeyAlgorithmProvider.OpenAlgorithm(SymmetricAlgorithmNames.AesCbcPkcs7);
var keyHash = GetMD5Hash(key);
var symetricKey = aesCbcPkcs7.CreateSymmetricKey(keyHash);
IBuffer iv = CryptographicBuffer.GenerateRandom(aesCbcPkcs7.BlockLength);
IBuffer buffDecrypted = CryptographicEngine.Decrypt(symetricKey, toDecryptBuffer , iv);
StorageFolder local = Windows.Storage.ApplicationData.Current.LocalFolder;
var Newfile = await local.CreateFileAsync("Decrypted.jpg", CreationCollisionOption.ReplaceExisting);
await Windows.Storage.FileIO.WriteBufferAsync(Newfile, buffDecrypted);