2012-12-06 14 views
7

के साथ एन्क्रिप्शन मैं इस एन्क्रिप्शन चीज के लिए काफी नया हूं और मैं किसी दिए गए स्ट्रिंग को एन्क्रिप्ट करने के लिए एक सरल ऐप करने की कोशिश कर रहा हूं। यहाँ मेरी कोड है:प्रमाणपत्र

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

} 

तो हर बार जब मैं cipherRequest यह अलग परिणाम का उत्पादन कहते हैं। मैंने जांच की है कि प्रमाणपत्र लोड हो गया है लेकिन यह अलग-अलग परिणाम उत्पन्न करता है।

किसी भी विचार?

+3

यह व्यवहार डिज़ाइन द्वारा है। क्या कोई वास्तविक समस्या है? – SLaks

+1

आपके पास 'बाइट []' नाम स्ट्रिंग क्यों है? – SLaks

उत्तर

7

कुछ हमलों से बचने के लिए वास्तविक एन्क्रिप्शन से पहले यादृच्छिक पैडिंग जोड़ा जाता है। यही कारण है कि जब भी आप एन्क्रिप्शन विधि को कॉल करते हैं तो आपको अलग-अलग परिणाम मिल रहे हैं।

अधिक जानकारी के लिए, इस पोस्ट देखें:

RSA in C# does not produce same encrypted string for specific keys?

+0

धन्यवाद, कुछ और पढ़ने के माध्यम से मैंने उस निष्कर्ष तक पहुंचने में कामयाब रहा :) मेरा बुरा – antistes

संबंधित मुद्दे