Windows应用程序中的AES / CBC / PKCS5Padding

时间:2015-04-15 11:57:48

标签: c# windows cryptography windows-8.1

我正在开发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);

0 个答案:

没有答案