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
Pourquoi avez-vous un
byte[]
nommé chaîne?OriginalL'auteur antistes | 2012-12-06
Vous devez vous connecter pour publier un commentaire.
Aléatoire remplissage est ajouté avant le chiffrement pour éviter certaines attaques. C'est pourquoi vous obtenez des résultats différents à chaque fois que vous appelez la méthode de chiffrement.
Pour plus d'info, voir ce post:
RSA en C# ne pas produire la même chaîne cryptée pour les touches spécifiques?
OriginalL'auteur Maxam