公開鍵/秘密鍵をAsymmetricKeyAlgorithmProviderのImportKeyPairメソッドにインポートするにはどうすればよいですか?どのようにIBufferパラメータを作成する必要がありますか?
サーバでは、引き続き一般的なRSACryptoServiceProviderを使用して、publickeyとprivatekeyを返すことができます。 UWPアプリで
System.Security.Cryptography.RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();
rsa.FromXmlString(xmlPrivatelKey);
byte[] data1 = rsa.ExportCspBlob(false);
byte[] data2 = rsa.ExportCspBlob(true);
string pubkey = System.Convert.ToBase64String(data1);
string privKey = System.Convert.ToBase64String(data2);
、あなたはデータの暗号化と復号化にAsymmetricKeyAlgorithmProviderを使用することができます。
public static byte[] Encrypt(byte[] data, string publicKey)
{
IBuffer buffer = WindowsRuntimeBufferExtensions.AsBuffer(data, 0, data.Length);
AsymmetricKeyAlgorithmProvider asymmetricAlgorithm = AsymmetricKeyAlgorithmProvider.OpenAlgorithm("RSA_PKCS1");
try
{
CryptographicKey key = asymmetricAlgorithm.ImportPublicKey(CryptographicBuffer.DecodeFromBase64String(publicKey), CryptographicPublicKeyBlobType.Capi1PublicKey);
IBuffer encrypted = CryptographicEngine.Encrypt(key, buffer, null);
return encrypted.ToArray();
}
catch (Exception ex)
{
Debug.WriteLine(ex.StackTrace);
return new byte[0];
}
}
public static byte[] Decrypt(byte[] data, string publicKey, string privateKey)
{
IBuffer buffer = WindowsRuntimeBufferExtensions.AsBuffer(data, 0, data.Length);
AsymmetricKeyAlgorithmProvider asymmetricAlgorithm = AsymmetricKeyAlgorithmProvider.OpenAlgorithm(AsymmetricAlgorithmNames.RsaPkcs1);
try
{
CryptographicKey pubkey = asymmetricAlgorithm.ImportPublicKey(CryptographicBuffer.DecodeFromBase64String(publicKey), CryptographicPublicKeyBlobType.Capi1PublicKey);
CryptographicKey keyPair2 = asymmetricAlgorithm.ImportKeyPair(CryptographicBuffer.DecodeFromBase64String(privateKey), CryptographicPrivateKeyBlobType.Capi1PrivateKey);
IBuffer decrypted = CryptographicEngine.Decrypt(keyPair2, buffer, null);
return decrypted.ToArray();
}
catch (Exception ex)
{
Debug.WriteLine(ex.StackTrace);
return new byte[0];
}
}
ありがとうございました。 –