2012-12-06 14 views
7

Jestem całkiem nowy w tej całej sprawie szyfrowania i próbuję zrobić prostą aplikację do zaszyfrowania danego ciągu znaków. Oto mój kod:Szyfrowanie z certyfikatem

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

} 

Więc za każdym razem nazywam cipherRequest produkuje różne wyniki. Sprawdziłem, czy certyfikat został załadowany, ale generuje różne wyniki.

Jakieś myśli?

+3

To zachowanie jest zgodne z projektem. Czy istnieje rzeczywisty problem? – SLaks

+1

Dlaczego masz nazwany ciąg 'byte []'? – SLaks

Odpowiedz