使用证书加密

ant*_*tes 7 c# certificate public-key-encryption

我对所有这些加密事件都很陌生,我正在尝试使用一个简单的应用来加密给定的字符串.这是我的代码:

public static X509Certificate2 getPublicKey()
{
    RSACryptoServiceProvider RSA = new RSACryptoServiceProvider();

    X509Certificate2 cert2 = new X509Certificate2("c:\\certificate.cer");

    return cert2;
}


public static string cipherRequest(byte[] stringToEncrypt)
{
    X509Certificate2 certificate = getPublicKey();

    RSACryptoServiceProvider rsa = certificate.PublicKey.Key as RSACryptoServiceProvider;

    byte[] cryptedData = rsa.Encrypt(stringToEncrypt, true);

    return Convert.ToBase64String(cryptedData);
}

public static void Main()
{

    try
    {

        ASCIIEncoding ByteConverter = new ASCIIEncoding();

        byte[] test = ByteConverter.GetBytes("stringtoencrypt");

        string first = cipherRequest(test);
        string second= cipherRequest(test);

        Console.WriteLine("first: {0}", first);
        Console.WriteLine("second: {0}", second);

    }
    catch(CryptographicException e)
    {
        Console.WriteLine(e.Message);
    }

}
Run Code Online (Sandbox Code Playgroud)

因此每次我调用cipherRequest它都会产生不同的结果.我已检查证书已加载但它产生不同的结果.

有什么想法吗?

Max*_*xam 7

在实际加密之前添加随机填充以避免某些攻击.这就是每次调用加密方法时获得不同结果的原因.

有关详细信息,请参阅此帖子:

C#中的RSA不会为特定密钥生成相同的加密字符串?