2014-04-21 50 views
1

以下是我的代碼。每次我對字符串進行加密時,都會在最後給出字符串「==」。在加密字符串中避免「==」

我該如何避免這種情況。

Private Function Encrypt(clearText As String) As String 
    Dim EncryptionKey As String = "MAKV2SPBNI99212" 
    Dim clearBytes As Byte() = Encoding.Unicode.GetBytes(clearText) 
    Using encryptor As Aes = Aes.Create() 
     Dim pdb As New Rfc2898DeriveBytes(EncryptionKey, New Byte() {&H49, &H76, &H61, &H6E, &H20, &H4D, _ 
     &H65, &H64, &H76, &H65, &H64, &H65, _ 
     &H76}) 
     encryptor.Key = pdb.GetBytes(32) 
     encryptor.IV = pdb.GetBytes(16) 
     Using ms As New MemoryStream() 
      Using cs As New CryptoStream(ms, encryptor.CreateEncryptor(), CryptoStreamMode.Write) 
       cs.Write(clearBytes, 0, clearBytes.Length) 
       cs.Close() 
      End Using 
      clearText = Convert.ToBase64String(ms.ToArray()) 
     End Using 
    End Using 
    Return clearText 
End Function 
+0

如果您使用base64編碼,則無法更改字節數。 – duncan

+0

我準備好更改字節。你能給我一些示例代碼嗎? – user1144271

+0

如果您想再次解碼,則無法進行加密。 – Bit

回答

1

這是base-64 encoding的結果。它只是表示輸入字節數組的長度不是3的倍數,並且對於正確解碼字符串是必需的。沒有什麼可擔心的,它並不表示你的加密算法有什麼問題。

如果您確實需要防止它,請確保您傳遞給ToBase64String的字節數組的長度爲3的倍數,可能通過將數組填充爲零(但那麼您必須能夠剝離解碼字符串後,這些零將關閉)。

+0

您好,我將該郵件中的密碼字符串傳遞給其他人。在電子郵件中,那些「==」沒有被加下劃線。所以,如果用戶點擊鏈接,他就會錯過「==」並導致錯誤。 – user1144271

+0

@ user1144271如何編碼URL('='編碼爲'%3D')或用另一個字符(例如'-')替換'='? –

+0

我認爲它的工作原理,但有沒有任何標準的方式來加密和解密字符串? – user1144271