日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

如何用ASP.NET加密Cookie数据过程分析

發(fā)布時間:2025/6/17 asp.net 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 如何用ASP.NET加密Cookie数据过程分析 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

  如何用ASP.NET加密Cookie數(shù)據(jù)過程呢,這里做個簡單的分析。

????? 首先,Cookie數(shù)據(jù)包含在HTTP請求和響應的包頭里透明地自吸泵傳遞,也就是說聰明的人是能清清楚楚看到這些數(shù)據(jù)的
  其次,Cookie數(shù)據(jù)以Cookie文件格式存儲在瀏覽者計算機的cache目錄里,其中就包含有關網(wǎng)頁、密碼和其他用戶行為的信息,那么只要進入硬盤就能打開Cookie文件。圖1是一個Cookie文件的內容:
  
  如果你未曾留意你的機器里有Cookie文件,可以按下列方法查看:打開IE,選擇“工具”菜單里的“Internet選項”,然后在彈出的對話框里點擊“設置”按鈕,在設置對話框里點擊“查看”鈕,就會打開一個窗口顯示瀏覽器放在硬盤里的所有緩存數(shù)據(jù),其中就有大量的Cookie文件。
  
  所以奉勸大家不要將敏感的用戶數(shù)據(jù)存放在Cookie中,要么就通過加密將這些數(shù)據(jù)保護起來。
  
  在以前的ASP版本中沒有加密的功能,現(xiàn)在.NET構架在System.Security.Cryptography命名空間里提供了許多加密類可以利用自吸泵。
  
  一、.NET的密碼系統(tǒng)概要
  
  簡單地說,加密就是將原始字符(字節(jié))串轉變?yōu)橥耆煌淖址奶幚磉^程,達到原始字符無法破譯的目的。這個處理過程是用另一個字符串(稱為“密鑰”),采取復雜的、混合的算法,“搗進”原始字符串。有時還使用一個稱為“初始向量”的字符串,在密鑰搗進之前先打亂目標字符串,預防目標字符串中較明顯的內容被識破。加密的功效取決于所用密鑰的大小,密鑰越長,保密性越強。典型的密鑰長度有64位、128位、192位、256位和512位。攻擊者唯一的方法是創(chuàng)建一個程序嘗試每一個可能的密鑰組合,但64位密鑰也有72,057,594,037,927,936種組合。
  
  目前有兩種加密方法:對稱加密(或稱私有密鑰)和非對稱加密(或稱公共密鑰)。對稱加密技術的數(shù)據(jù)交換兩邊(即加密方和解密方)必須使用一個保密的私有密鑰。非對稱加密技術中,解密方向加密方要求一個公共密鑰,加密方在建立一個公共密鑰給解密方后,用公共密鑰創(chuàng)建唯一的私有密鑰。加密方用私有密鑰加密送出的信息,對方用公共密鑰解密。保護HTTP傳輸安全的SSL就是使用自吸泵非對稱技術。
  
  我們對Cookie數(shù)據(jù)的加密采取對稱加密法。.NET構架從基本的SymmetricAlgorithm類擴展出來四種算法:
  
  ·System.Security.Cryptography.DES
  
  ·System.Security.Cryptography.TripleDES
  
  ·System.Security.Cryptography.RC2
  
  ·System.Security.Cryptography.Rijndael
  
  下面將示范DES和TripleDES算法。DES的密鑰大小限制在64位,但用于Cookie的加密是有效的。TripleDES完成了三次加密,并有一個較大的密鑰位數(shù),所以它更安全。使用那一種算法不僅要考慮加密強度,還要考慮Cookie的大小。因為加密后的Cookie數(shù)據(jù)將變大,并且,密鑰越大,加密后的數(shù)據(jù)就越大,然而Cookie數(shù)據(jù)的大小限制在4KB,這是一個必須考慮的問題。再者,加密的數(shù)據(jù)越多或算法越復雜,就會占有更多的服務器資源,進而減慢整個站點的訪問速度。
  
  二、創(chuàng)建一個簡單的加密應用類
  
  .NET的所有加密和解密通過CryptoStream類別來處理,它衍生自System.IO.Stream,將字符串作為以資料流為基礎的模型,供加密轉換之用。下面是一個簡單的加密應用類的代碼:
  
  Imports System.Diagnostics
  
  Imports System.Security.Cryptography
  
  Imports System.Text
  
  Imports System.IO
  
  
  Public Class CryptoUtil
  
  
  '隨機選8個字節(jié)既為密鑰也為初始向量
  
  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字節(jié)或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()
  
  
  '從字符串轉換為字節(jié)組
  
  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()
  
  
  '從字符串轉換為字節(jié)組
  
  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
  
  上面我們將一組字節(jié)初始化為密鑰,并且使用的是數(shù)字常量,如果你在佛山實際應用中也這樣做,這些字節(jié)一定要在0和255之間,這是一個字節(jié)大田閥門產(chǎn)品中心允許的范圍值。
  
  三、創(chuàng)建一個Cookie的應用類
  
  下面我們就創(chuàng)建一個簡單的類,來設置和獲取Cookies。
  
  Public Class CookieUtil
  
  
  '設置COOKIE *****************************************************
  
  
  'SetTripleDESEncryptedCookie (只針對密鑰和Cookie數(shù)據(jù))
  
  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數(shù)據(jù)的有效期參數(shù))
  
  Public Shared Sub SetTripleDESEncryptedCookie(ByVal key As String, _

自吸泵相關信息請訪問:

轉載于:https://www.cnblogs.com/lanxin258/archive/2012/01/12/2320605.html

總結

以上是生活随笔為你收集整理的如何用ASP.NET加密Cookie数据过程分析的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內容還不錯,歡迎將生活随笔推薦給好友。