我正在尝试我的手在UWP平台上的加密和解密,并试图找出这个问题。所以首先,我加密我的字符串“示例语句”。使用以下:CryptographicEngine.DecryptAsync引发“System.InvalidCastException:'指定的转换无效。' “而CryptographicEngine.Decrypt不
IBuffer bufEncrypted = CryptographicEngine.Encrypt(key, CryptographicBuffer.ConvertStringToBinary(strToEncrypt, BinaryStringEncoding.Utf8), null);
string strEncrypted = CryptographicBuffer.EncodeToBase64String(bufEncryptedStr);
然后,当我尝试解密 “strEncrypted” 使用:
IBuffer bufToDecrypt = CryptographicBuffer.DecodeFromBase64String(strEncrypted);
IBuffer bufEncryptedStr = await CryptographicEngine.DecryptAsync(key, bufToDecrypt, null);
我得到的错误是 “System.InvalidCastException: '指定的转换是无效的。'”。
然而,当我尝试同样的解密使用:
我没有得到任何错误,并且可以使用得到解密的字符串:
CryptographicBuffer.ConvertBinaryToString(BinaryStringEncoding.Utf8, bufEncryptedSt1r);
任何想法我可能会丢失?
相关信息:
IBuffer bufKeyMaterial = CryptographicBuffer.GenerateRandom(256);
SymmetricKeyAlgorithmProvider provider = SymmetricKeyAlgorithmProvider.OpenAlgorithm(SymmetricAlgorithmNames.AesEcbPkcs7);
CryptographicKey key = provider.CreateSymmetricKey(bufKeyMaterial);
我不明白为什么没有在Microsoft文档中提到这一点。我不知道它会抛出一个无效的演员例外。谢谢! –