Chiffrement avec certificat

Je suis assez nouveau à tout cela, cryptage de chose et je suis en train de faire une application simple pour chiffrer une chaîne donnée. Voici mon code:

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);
    }

}

De sorte que chaque fois que j'appelle le cipherRequest il produit des résultats différents. J'ai vérifié le certificat est chargé, mais il produit des résultats différents.

Toutes les pensées?

Ce comportement est par la conception. Est-il un réel problème?
Pourquoi avez-vous un byte[] nommé chaîne?

OriginalL'auteur antistes | 2012-12-06