⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 jia_mi_cookie.txt

📁 创建一个简单的加密应用类 用ASP.NET加密Cookie数据
💻 TXT
字号:
Imports System.Diagnostics

Imports System.Security.Cryptography

Imports System.Text

Imports System.IO


Public Class CryptoUtil


'随机选8个字节既为密钥也为初始向量

Private Shared KEY_64() As Byte = {42, 16, 93, 156, 78, 4, 218, 32}

Private Shared IV_64() As Byte = {55, 103, 246, 79, 36, 99, 167, 3}


'对TripleDES,采取24字节或192位的密钥和初始向量

Private Shared KEY_192() As Byte = {42, 16, 93, 156, 78, 4, 218, 32, _

15, 167, 44, 80, 26, 250, 155, 112, _

2, 94, 11, 204, 119, 35, 184, 197}

Private Shared IV_192() As Byte = {55, 103, 246, 79, 36, 99, 167, 3, _

42, 5, 62, 83, 184, 7, 209, 13, _

145, 23, 200, 58, 173, 10, 121, 222}


'标准的DES加密

Public Shared Function Encrypt(ByVal value As String) As String

If value <> "" Then

Dim cryptoProvider As DESCryptoServiceProvider = _

New DESCryptoServiceProvider()

Dim ms As MemoryStream = New MemoryStream()

Dim cs As CryptoStream = _

New CryptoStream(ms, cryptoProvider.CreateEncryptor(KEY_64, IV_64), _

CryptoStreamMode.Write)

Dim sw As StreamWriter = New StreamWriter(cs)


sw.Write(value)

sw.Flush()

cs.FlushFinalBlock()

ms.Flush()


'再转换为一个字符串

Return Convert.ToBase64String(ms.GetBuffer(), 0, ms.Length)

End If

End Function



'标准的DES解密

Public Shared Function Decrypt(ByVal value As String) As String

If value <> "" Then

Dim cryptoProvider As DESCryptoServiceProvider = _

New DESCryptoServiceProvider()


'从字符串转换为字节组

Dim buffer As Byte() = Convert.FromBase64String(value)

Dim ms As MemoryStream = New MemoryStream(buffer)

Dim cs As CryptoStream = _

New CryptoStream(ms, cryptoProvider.CreateDecryptor(KEY_64, IV_64), _

CryptoStreamMode.Read)

Dim sr As StreamReader = New StreamReader(cs)


Return sr.ReadToEnd()

End If

End Function


'TRIPLE DES加密

Public Shared Function EncryptTripleDES(ByVal value As String) As String

If value <> "" Then

Dim cryptoProvider As TripleDESCryptoServiceProvider = _

New TripleDESCryptoServiceProvider()

Dim ms As MemoryStream = New MemoryStream()

Dim cs As CryptoStream = _

New CryptoStream(ms, cryptoProvider.CreateEncryptor(KEY_192, IV_192), _

CryptoStreamMode.Write)

Dim sw As StreamWriter = New StreamWriter(cs)


sw.Write(value)

sw.Flush()

cs.FlushFinalBlock()

ms.Flush()


'再转换为一个字符串

Return Convert.ToBase64String(ms.GetBuffer(), 0, ms.Length)

End If

End Function



'TRIPLE DES解密

Public Shared Function DecryptTripleDES(ByVal value As String) As String

If value <> "" Then

Dim cryptoProvider As TripleDESCryptoServiceProvider = _

New TripleDESCryptoServiceProvider()


'从字符串转换为字节组

Dim buffer As Byte() = Convert.FromBase64String(value)

Dim ms As MemoryStream = New MemoryStream(buffer)

Dim cs As CryptoStream = _

New CryptoStream(ms, cryptoProvider.CreateDecryptor(KEY_192, IV_192), _

CryptoStreamMode.Read)

Dim sr As StreamReader = New StreamReader(cs)


Return sr.ReadToEnd()

End If

End Function


End Class

上面我们将一组字节初始化为密钥,并且使用的是数字常量,如果你在实际应用中也这样做,这些字节一定要在0和255之间,这是一个字节允许的范围值。

三、创建一个Cookie的应用类

下面我们就创建一个简单的类,来设置和获取Cookies。

Public Class CookieUtil


'设置COOKIE *****************************************************


'SetTripleDESEncryptedCookie (只针对密钥和Cookie数据)

Public Shared Sub SetTripleDESEncryptedCookie(ByVal key As String, _

ByVal value As String)

key = CryptoUtil.EncryptTripleDES(key)

value = CryptoUtil.EncryptTripleDES(value)


SetCookie(key, value)

End Sub


'SetTripleDESEncryptedCookie (增加了Cookie数据的有效期参数)

Public Shared Sub SetTripleDESEncryptedCookie(ByVal key As String, _

ByVal value As String, ByVal expires As Date)

key = CryptoUtil.EncryptTripleDES(key)

value = CryptoUtil.EncryptTripleDES(value)


SetCookie(key, value, expires)

End Sub



'SetEncryptedCookie(只针对密钥和Cookie数据)

Public Shared Sub SetEncryptedCookie(ByVal key As String, _

ByVal value As String)

key = CryptoUtil.Encrypt(key)

value = CryptoUtil.Encrypt(value)


SetCookie(key, value)

End Sub


'SetEncryptedCookie (增加了Cookie数据的有效期参数)

Public Shared Sub SetEncryptedCookie(ByVal key As String, _

ByVal value As String, ByVal expires As Date)

key = CryptoUtil.Encrypt(key)

value = CryptoUtil.Encrypt(value)


SetCookie(key, value, expires)

End Sub



'SetCookie (只针对密钥和Cookie数据)

Public Shared Sub SetCookie(ByVal key As String, ByVal value As String)

'编码部分

key = HttpContext.Current.Server.UrlEncode(key)

value = HttpContext.Current.Server.UrlEncode(value)


Dim cookie As HttpCookie

cookie = New HttpCookie(key, value)

SetCookie(cookie)

End Sub


'SetCookie(增加了Cookie数据的有效期参数)

Public Shared Sub SetCookie(ByVal key As String, _

ByVal value As String, ByVal expires As Date)

'编码部分

key = HttpContext.Current.Server.UrlEncode(key)

value = HttpContext.Current.Server.UrlEncode(value)


Dim cookie As HttpCookie

cookie = New HttpCookie(key, value)

cookie.Expires = expires

SetCookie(cookie)

End Sub


'SetCookie (只针对HttpCookie)

Public Shared Sub SetCookie(ByVal cookie As HttpCookie)

HttpContext.Current.Response.Cookies.Set(cookie)

End Sub


'获取COOKIE *****************************************************


Public Shared Function GetTripleDESEncryptedCookieValue(ByVal key As String) _

As String

'只对密钥加密

key = CryptoUtil.EncryptTripleDES(key)


'获取Cookie值 

Dim value As String

value = GetCookieValue(key)

'解密Cookie值

value = CryptoUtil.DecryptTripleDES(value)

Return value

End Function


Public Shared Function GetEncryptedCookieValue(ByVal key As String) As String

'只对密钥加密

key = CryptoUtil.Encrypt(key)


'获取Cookie值

Dim value As String

value = GetCookieValue(key)

'解密Cookie值

value = CryptoUtil.Decrypt(value)

Return value

End Function


Public Shared Function GetCookie(ByVal key As String) As HttpCookie

'编码密钥

key = HttpContext.Current.Server.UrlEncode(key)

Return HttpContext.Current.Request.Cookies.Get(key)

End Function


Public Shared Function GetCookieValue(ByVal key As String) As String

Try

'编码在GetCookie里完成

'获取Cookie值

Dim value As String

value = GetCookie(key).Value

'解码所存储的值

value = HttpContext.Current.Server.UrlDecode(value)

Return value

Catch

End Try

End Function


End Class

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -