2013-06-19 7 views
7

Ho scritto una routine di crittografia costruita con diversi metodi sulla rete. Attualmente sto testando la crittografia e ho notato che ogni valore crittografato termina con '=='?I valori di crittografia gestiti da AES terminano sempre in ==?

Qualcuno sa perché questo potrebbe essere il caso?

Questo è il codice che sto usando. La chiave è un valore di 32 caratteri e IV è un valore di 16 caratteri.

private static readonly byte[] key = Encoding.Default.GetBytes(getKey()); 
    private static readonly byte[] iv = Encoding.Default.GetBytes("$ruVe4E!eM#kupuc"); 

    /// <summary> 
    /// 
    /// </summary> 
    /// <param name="val"></param> 
    /// <returns></returns> 
    public static string Encrypt(string val) 
    { 
     string result = string.Empty; 

     var aes = getEncryptionType(); 

     using (MemoryStream msEncrypt = new MemoryStream()) 
     { 
      using (ICryptoTransform encryptor = aes.CreateEncryptor(key, iv)) 
      { 
       using(CryptoStream csEncrypt = new CryptoStream(msEncrypt, encryptor, CryptoStreamMode.Write)) 
       { 
        using(StreamWriter swEncrypt = new StreamWriter(csEncrypt)) 
        { 
         swEncrypt.Write(val); 
        } 
       } 
      } 
      result = Convert.ToBase64String(msEncrypt.ToArray()); 
     } 
     aes.Clear(); 
     return result; 
    } 

getEncryptionType restituisce una classe AESManaged come di seguito:

private static AesManaged getEncryptionType() 
    { 
     AesManaged aes = new AesManaged(); 
     aes.Mode = CipherMode.CBC; 
     aes.Padding = PaddingMode.PKCS7; 
     return aes; 
    } 

Attualmente il metodo di prova si presenta così:

Random rnd = new Random(); 

       for (int i = 0; i < 50000; i++) 
       { 
        int random = rnd.Next(1147483647, int.MaxValue); 
        Guid guid = dal.getToken(CryptoService.Encrypt(random.ToString())); 

        if (i % 100 == 0) 
         addLog(string.Format("{0} new values added", i.ToString()), LogType.Dialog); 
       } 
+1

Se si dispone di due domande allora ** fare due domande **. Stai facendo due domande completamente diverse in questa domanda. La maggior parte delle persone risponderà solo a una di esse e quindi avrai un problema nel cercare di scegliere quale risposta accettare. Il mio consiglio è di eliminare la seconda domanda da questa domanda e iniziare una nuova domanda. –

+1

Inoltre, 'char' in C# è 16 bit. –

risposta

Problemi correlati