在通用Windows平台(UWP)应用程序中使用DESCryptoServiceProvider
问题描述:
我有一个UWP应用程序与我的Web服务通信,并且使用某些方法,我的应用程序必须加密参数。 对于解密我们在在通用Windows平台(UWP)应用程序中使用DESCryptoServiceProvider
System.Security.Cryptography
使用DESCryptoServiceProvider and CryptoStream
但UWP没有System.Security.Cryptography,
和Windows.Security.Cryptography
不含DESCryptoServiceProvider and CryptoStream
!
请帮助我谢谢。
答
在通用Windows应用程序中,您必须使用CryptographicEngine
进行加密和解密操作。
对于您的解密用例,您可以使用DecryptAsync
方法,该方法需要除了加密数据和IV之外的一个键来执行操作。
您需要的键将由SymmetricKeyAlgorithmProvider
类创建。因此,通过打开desired algorithm并创建密钥来初始化新实例。
例如:
// Static method call, "SymmetricAlgorithmNames" has several DES algorithms,
// so choose the correct one
var provider = SymmetricKeyAlgorithmProvider
.OpenAlgorithm(SymmetricAlgorithmNames.DesEcbPkcs7);
var key = provider.CreateSymmetricKey(myKeyMaterial);
你知道如何使用已经存在的关键,而不是创建一个新的? API似乎没有提供“导入”现有密钥以用于对称算法的方式。 – disklosr
@disklosr这与上面的方法相同,只是使用不同的'myKeyMaterial'。这与使用密码作为密钥材料的方式相同。你最终会得到大约230行代码,在两者之间使用'IBuffer'和'CryptographicEngine.DeriveKeyMaterial'。这不是很直观,是的。 – Herdo