Public NotInheritable Class PrivateClass 
' Methods 
Public Sub New(ByVal key As String) 
Public Function DecryptData(ByVal encryptedtext As String) As String 
Public Function EncryptData(ByVal plaintext As String) As String 
Private Function TruncateHash(ByVal key As String, ByVal length As Integer) As Byte() ' Fields 
Private TripleDes As TripleDESCryptoServiceProvider 
End Class 
Expand Methods 
Public Function DecryptData(ByVal encryptedtext As String) As String 
Dim buffer As Byte() = Convert.FromBase64String(encryptedtext) 
Dim stream2 As New MemoryStream 
Dim stream As New CryptoStream(stream2, Me.TripleDes.CreateDecryptor, CryptoStreamMode.Write) 
stream.Write(buffer, 0, buffer.Length) 
stream.FlushFinalBlock 
Return Encoding.Unicode.GetString(stream2.ToArray) 
End Function 
Public Function EncryptData(ByVal plaintext As String) As String 
Dim bytes As Byte() = Encoding.Unicode.GetBytes(plaintext) 
Dim stream2 As New MemoryStream 
Dim stream As New CryptoStream(stream2, Me.TripleDes.CreateEncryptor, CryptoStreamMode.Write) 
stream.Write(bytes, 0, bytes.Length) 
stream.FlushFinalBlock 
Return Convert.ToBase64String(stream2.ToArray) 
End Function 
Private Function TruncateHash(ByVal key As String, ByVal length As Integer) As Byte() 
Dim provider As New SHA1CryptoServiceProvider 
Dim bytes As Byte() = Encoding.Unicode.GetBytes(key) 
Return DirectCast(Utils.CopyArray(DirectCast(provider.ComputeHash(bytes), Array), New Byte(((length - 1) + 1) - 1) {}), Byte()) 
End Function 
Private TripleDes As TripleDESCryptoServiceProvider

解决方案 »

  1.   

    Base64
    采用的是这种加密方式.以下是猜测:
    以上的代码片段关于邮件的吗?
      

  2.   

    请问Base64的加密方式能使用密匙吗?密匙加密生成固定长度
      

  3.   

    他是一种加密方式.
    他无明确的密匙.
    密文只与原文有关.
    以下是关于Base64的说明:
    你可以看一下:编码规则 Base64编码的思想是是采用64个基本的ASCII码字符对数据进行重新编码。它将需要编码的数据拆分成字节数组。以3个字节为一组。按顺序排列24位数据,再把这24位数据分成4组,即每组6位。再在每组的的最高位前补两个0凑足一个字节。这样就把一个3字节为一组的数据重新编码成了4个字节。当所要编码的数据的字节数不是3的整倍数,也就是说在分组时最后一组不够3个字节。这时在最后一组填充1到2个0字节。并在最后编码完成后在结尾添加1到2个“=”。 例:将对ABC进行BASE64编码 首先取ABC对应的ASCII码值。A(65)B(66)C(67)。 再取二进制值A(01000001)B(01000010)C(01000011),然后把这三个字节的二进制码接起来(010000010100001001000011),再以6位为单位分成4个数据块并在最高位填充两个0后形成4个字节的编码后的值(00010000)(00010100)(00001001)(00000011)。蓝色部分为真实数据。再把这四个字节数据转化成10进制数得(16)(20)(19)(3)。最后根据BASE64给出的64个基本字符表,查出对应的ASCII码字符(Q)(U)(J)(D)。这里的值实际就是数据在字符表中的索引。