2016-01-20 221 views
1

我有一个UWP应用程序与我的Web服务通信,并且使用某些方法,我的应用程序必须加密参数。 对于解密我们在在通用Windows平台(UWP)应用程序中使用DESCryptoServiceProvider

System.Security.Cryptography 

使用DESCryptoServiceProvider and CryptoStream但UWP没有System.Security.Cryptography,Windows.Security.Cryptography不含DESCryptoServiceProvider and CryptoStream

请帮助我谢谢。

回答

1

在通用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); 
+0

你知道如何使用已经存在的关键,而不是创建一个新的? API似乎没有提供“导入”现有密钥以用于对称算法的方式。 – disklosr

+0

@disklosr这与上面的方法相同,只是使用不同的'myKeyMaterial'。这与使用密码作为密钥材料的方式相同。你最终会得到大约230行代码,在两者之间使用'IBuffer'和'CryptographicEngine.DeriveKeyMaterial'。这不是很直观,是的。 – Herdo

相关问题