【问题标题】:Public key to RSA public key for c#c# 的 RSA 公钥的公钥
【发布时间】:2017-02-06 15:27:45
【问题描述】:

我需要在 c# 项目中使用 RSA Cryptography 将加密数据发送到服务。 服务给了我一个这样的公钥:

-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAjU/bq6YZD2H0DUhbtEBg
JIyiurM8eX3aH02/ZWr6VZ27WF93ylWC4cGAe50sSgiA8NCW0G/UL77kAkebJQrJ
jVdt7SvDypSPk1mXNK0i9cI9DrdmAHLGLlYJx7eeY6h4JShLhOBnKRghi0S4uL5N
L7W4OUgCeUlGWcmz8ssNEQ5w17rfUF9TxYEFVKFMGN/SSaYNUr4znGt2r97YPsPy
0Sk4dGHhMXr1QGR05UQeVuU43OuRAFxA71YbuCRUYg5ENwKM/1RnNcu8v7kXFA4L
qGV9AncHLIZEOqWgY+4balVXlKIcMVN6W+PXKJpowOyB9QIq1Ec3OMaJ3sGpOppx
KQIDAQAB
-----END PUBLIC KEY-----

如何将其转换为 base64 字符串以用于此代码?

public static string EncryptData(string publicKey, string clearText)
{
    IBuffer keyBuffer = CryptographicBuffer.DecodeFromBase64String(publicKey);
    AsymmetricKeyAlgorithmProvider asym = AsymmetricKeyAlgorithmProvider.OpenAlgorithm(AsymmetricAlgorithmNames.RsaPkcs1);
    CryptographicKey key = asym.ImportPublicKey(keyBuffer, CryptographicPublicKeyBlobType.Capi1PublicKey);
    IBuffer plainBuffer = CryptographicBuffer.ConvertStringToBinary(clearText, BinaryStringEncoding.Utf8);
    IBuffer encryptedBuffer = CryptographicEngine.Encrypt(key, plainBuffer, null);
    byte[] encryptedBytes;
    CryptographicBuffer.CopyToByteArray(encryptedBuffer, out encryptedBytes);
    return Convert.ToBase64String(encryptedBytes);
}

【问题讨论】:

标签: c# cryptography rsa public-key


【解决方案1】:

我找到了解决方案,很简单: 我需要使用:

 CryptographicKey key = asym.ImportPublicKey(keyBuffer, CryptographicPublicKeyBlobType.X509SubjectPublicKeyInfo);

【讨论】:

    猜你喜欢
    • 2020-12-19
    • 1970-01-01
    • 1970-01-01
    • 2012-01-28
    • 2015-10-19
    • 2011-07-31
    • 2018-12-10
    • 2020-04-07
    • 2015-03-21
    相关资源
    最近更新 更多