我正在嘗試我的手在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文檔中提到這一點。我不知道它會拋出一個無效的演員例外。謝謝! –