中国站长下载-为中国站长提供最好最全的建站资源! 首 页发布资源有事留言繁體中文
设为首页
加入收藏
联系我们
 
您当前的位置:中国站长下载 -> 文章中心 -> 网页编程 -> .NET编程 -> 文章内容  虚拟主机 域名注册 退出登录 用户管理
栏目导航
· ASP编程 · .NET编程
· PHP编程 · JSP编程
· CGI 专区
热门文章
· sndvol32 - sndvol3...
· [组图] FLASH:《大话李白》...
· 个人网站到底能赚多...
· [图文] Rundll.exe是病毒吗...
· [组图] Flash:制作MV
· 价值12万元的网站SE...
· 网站创业者,你需要...
· 一个成功的网站设计...
· [图文] FLASH:韩国导航条解...
· 中国网站的赚钱模式...
相关文章
· [图文] 用ASP.NET 2.0设计网...
· [图文] 用ASP.NET 2.0设计网...
· [图文] 用ASP.NET 2.0设计网...
· [图文] 用ASP.NET 2.0设计网...
· [图文] 用ASP.NET 2.0设计网...
· 使用ASP.NET开发移动...
· 用ASP.NET开发Web服...
· [图文] 用ASP.NET在同一网页...
· 用Asp.net实现基于X...
· 用Asp.net实现基于X...
用ASP.NET加密Cookie数据(1)
作者:不详  来源:不详  发布时间:2006-8-14 9:14:27  发布人:chinazhan

 减小字体 增大字体

     一、.NET的密码系统概要
  
  简单地说,加密就是将原始字符(字节)串转变为完全不同的字符串的处理过程,达到原始字符无法破译的目的。这个处理过程是用另一个字符串(称为“密钥”),采取复杂的、混合的算法,“捣进”原始字符串。有时还使用一个称为“初始向量”的字符串,在密钥捣进之前先打乱目标字符串,预防目标字符串中较明显的内容被识破。加密的功效取决于所用密钥的大小,密钥越长,保密性越强。典型的密钥长度有64位、128位、192位、256位和512位。攻击者唯一的方法是创建一个程序尝试每一个可能的密钥组合,但64位密钥也有72,057,594,037,927,936种组合。
  
  目前有两种加密方法:对称加密(或称私有密钥)和非对称加密(或称公共密钥)。对称加密技术的数据交换两边(即加密方和解密方)必须使用一个保密的私有密钥。非对称加密技术中,解密方向加密方要求一个公共密钥,加密方在建立一个公共密钥给解密方后,用公共密钥创建唯一的私有密钥。加密方用私有密钥加密送出的信息,对方用公共密钥解密。保护HTTP传输安全的SSL就是使用非对称技术。
  
  我们对Cookie数据的加密采取对称加密法。.NET构架从基本的SymmetricAlgorithm类扩展出来四种算法:
  
  ·System.Security.Cryptography.DES
  
  ·System.Security.Cryptography.TripleDES
  
  ·System.Security.Cryptography.RC2
  
  ·System.Security.Cryptography.Rijndael
  
  下面将示范DES和TripleDES算法。DES的密钥大小限制在64位,但用于Cookie的加密是有效的。TripleDES完成了三次加密,并有一个较大的密钥位数,所以它更安全。使用那一种算法不仅要考虑加密强度,还要考虑Cookie的大小。因为加密后的Cookie数据将变大,并且,密钥越大,加密后的数据就越大,然而Cookie数据的大小限制在4KB,这是一个必须考虑的问题。再者,加密的数据越多或算法越复杂,就会占有更多的服务器资源,进而减慢整个站点的访问速度。
  
  二、创建一个简单的加密应用类
  
  .NET的所有加密和解密通过CryptoStream类别来处理,它衍生自System.IO.Stream,将字符串作为以资料流为基础的模型,供加密转换之用。下面是一个简单的加密应用类的代码:
  
  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
  
    做人要厚道,请注明转自chinazhan中国站长(www.ChinaZhan.com)。

 
[] [返回上一页] [打 印] [收 藏]
∷相关文章评论∷    (评论内容只代表网友观点,与本站立场无关!) [更多评论...]
中国站长下载
中国站长下载

本页只接受PR>=4 IT类站点连接,申请连接,谢谢您们的支持!希望我们的下载站能够真正帮到中国的站长们!
关于本站 - 网站帮助 - 广告合作 - 下载声明 - 友情连接 - 网站地图
Copyright © 2005-2006 ChinaZhan.Net. All Rights Reserved .