2016-04-03 31 views
0

Web sayfamın QueryString'e bir kimlik iletmek istiyorum, çünkü ziyaretçilerin sayıyı görmesini istemiyorum, RijndaelManaged algoritmasını kullanarak kodlarım, Sorunum bu şifreleme bazen ekliyor çift ​​çıkış dizisi hatasına neden olan '+' için bir karakter. Bazı karakterleri şifreleme çıktısından çıkarmanın bir yolu olup olmadığını merak ediyordum.çift çıkış sırası ve RijndaelManaged kriptografi C#

Benim şifreleme kodu aşağıdaki gibidir:

public static string Encrypt(string plainText) 
    { 
     byte[] plainTextBytes = Encoding.UTF8.GetBytes(plainText); 

     byte[] keyBytes = new Rfc2898DeriveBytes(PasswordHash, Encoding.ASCII.GetBytes(SaltKey)).GetBytes(256/8); 
     var symmetricKey = new RijndaelManaged() { Mode = CipherMode.CBC, Padding = PaddingMode.Zeros }; 
     var encryptor = symmetricKey.CreateEncryptor(keyBytes, Encoding.ASCII.GetBytes(VIKey)); 

     byte[] cipherTextBytes; 

     using (var memoryStream = new MemoryStream()) 
     { 
      using (var cryptoStream = new CryptoStream(memoryStream, encryptor, CryptoStreamMode.Write)) 
      { 
       cryptoStream.Write(plainTextBytes, 0, plainTextBytes.Length); 
       cryptoStream.FlushFinalBlock(); 
       cipherTextBytes = memoryStream.ToArray(); 
       cryptoStream.Close(); 
      } 
      memoryStream.Close(); 
     } 
     return Convert.ToBase64String(cipherTextBytes); 
    } 

cevap

0

Bir Hex dize yerine base64 dize için ByteArray dönüştürebilirsiniz. Hex, detaylar için sadece [a-f0-9] Bkz. this question.

Orijinal Sorunuzda olduğu gibi: + Karakter Sorunu'nu çözecek olan sorgu dizeleriniz için URL kodlamasını gerçekten kullanmalısınız.

+0

URL kodlamasını yapıyorum ancak yine de web sunucusu bunu + olarak değerlendiriyor –

İlgili konular