2013-06-19 6 views
7

Ich habe eine Verschlüsselungsroutine geschrieben, die aus verschiedenen Methoden im Netz erstellt wurde. Ich teste gerade die Verschlüsselung und habe festgestellt, dass jeder verschlüsselte Wert in '==' endet?AES verwaltete Verschlüsselungswerte enden immer in ==?

Weiß jemand, warum dies der Fall sein könnte?

Dies ist der Code, den ich verwende. Der Schlüssel ist ein 32-Zeichen-Wert und der IV ist ein 16-Zeichen-Wert.

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 gibt eine AESManaged Klasse wie folgt:

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

Derzeit ist die Testmethode sieht wie folgt aus:

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

Wenn Sie zwei Fragen haben, dann ** zwei Fragen stellen **. Sie stellen zwei völlig verschiedene Fragen in dieser einen Frage. Die meisten Leute werden nur einen von ihnen beantworten, und dann wirst du ein Problem haben, wenn du versuchst zu entscheiden, welche Antwort du annehmen sollst. Mein Rat ist, dass Sie die zweite Frage aus dieser Frage löschen und eine neue Frage beginnen. –

+1

Außerdem ist 'char' in C# 16 Bits. –

Antwort