Я пытаюсь разработать способ шифрования строки с использованием закрытого ключа и расшифровать ее с помощью общедоступного. Я создал ключи с помощью OpenSSL, как описано в:Кодирование/декодирование в UWP с использованием асимметричных клавиш
http://www.akadia.com/services/ssh_test_certificate.html
Это то, что я в настоящее время
public static string Encrypt(string str, string key)
{
try
{
key = key.Replace(Environment.NewLine, "");
IBuffer keyBuffer = CryptographicBuffer.DecodeFromBase64String(key);
AsymmetricKeyAlgorithmProvider provider = AsymmetricKeyAlgorithmProvider.OpenAlgorithm(AsymmetricAlgorithmNames.RsaPkcs1);
CryptographicKey publicKey = provider.ImportPublicKey(keyBuffer, CryptographicPublicKeyBlobType.Pkcs1RsaPublicKey);
IBuffer dataBuffer = CryptographicBuffer.CreateFromByteArray(Encoding.UTF8.GetBytes(str));
var encryptedData = CryptographicEngine.Encrypt(publicKey, dataBuffer, null);
return CryptographicBuffer.EncodeToBase64String(encryptedData);
}
catch (Exception e)
{
throw;
return "Error in Encryption:With RSA ";
}
}
Однако на методе ImportPublicKey
я получаю exceptin ASN1 corrupted data
строку key
, переданный этому методу, имеет следующий формат:
var privateKey =
@ "MIICXwIBAAKBgQDUTqfSknFiQx3aepORHJycWck007cfU4fXluTIyf6U9ipDhyPD .... yDxwZVmexltyK5Bwc26lmb + 5EtTEic + kZToYWcCucF8lsok =";
поэтому содержимое OpenSSL генерируется файл ключа без этой части:
-----BEGIN RSA PRIVATE KEY-----
-----END RSA PRIVATE KEY-----
Пожалуйста, используйте официальную портативную версию BouncyCastle, Portable.BouncyCastle. Я поддерживаю портативную вилку. Если у вас возникли проблемы, откройте проблему в репо: github.com/onovotny/bc-csharp –