遇到个问题,需要做个ASP上的3DES的加密,解密程序,可总是有错误,后来勉强的凑出个办法解决了,不过还显得太麻烦了,
已经过了很久,仍然要翻出来贴一下.
由于直接在ASP中,写这类脚本实在是麻烦,而且也没有找到什么适合的组件,所以改调用了ASP.NET中的功能,
System.Security和System.Security.Cryptography两个类中有直接可以使用的3DES的功能,比较方便,可以在WEB上,直接的在
ASP和ASP.NET中间转换使用.从而达到效果.
注意:如果要在WEB间传递字符的话,记得要加入URLEncode功能,否则可能会出现错误,字符无法读取的问题.
Encrypt__加密
@ Import Namespace=”System”
@ Import Namespace=”System.Security”
@ Import Namespace=”System.Security.Cryptography”
@ Import Namespace=”System.io”
@ Import Namespace=”System.text”
@ Import Namespace=”System.Threading”
‘密钥
const t_Key = “p3nfFnyuRdnHPizW75K2a6d53xZ8rkXZ”
‘矢量
const t_IV = “”
Dim str as string
‘获得需要加密的字符串
str=Request(Trim(”str”))
Dim byt As Byte()
Dim Mcsp As System.Security.Cryptography.SymmetricAlgorithm =System.Security.Cryptography.TripleDESCryptoServiceProvider.Create
Mcsp.Key = Convert.FromBase64String(T_key)
Mcsp.IV = Convert.FromBase64String(T_iv)
‘指定加密的运算模式
Mcsp.Mode = System.Security.Cryptography.CipherMode.ECB
Dim ct As System.Security.Cryptography.ICryptoTransform
Dim ms As System.IO.MemoryStream
Dim cs As System.Security.Cryptography.CryptoStream
‘获取或设置加密算法的填充模式
Mcsp.Padding = System.Security.Cryptography.PaddingMode.PKCS7
ct = Mcsp.CreateEncryptor(Mcsp.Key, Mcsp.IV)
byt = System.Text.Encoding.UTF8.GetBytes(str)
ms = New System.IO.MemoryStream()
cs = New System.Security.Cryptography.CryptoStream(ms, ct, System.Security.Cryptography.CryptoStreamMode.Write)
cs.Write(byt, 0, byt.Length)
cs.FlushFinalBlock()
cs.Close()
‘得到的Encodestr就是已经加密完成的字符串,
Encodestr= Convert.ToBase64String(ms.ToArray())
Decrypt__解密
@ Import Namespace=”System”
@ Import Namespace=”System.Security”
@ Import Namespace=”System.Security.Cryptography”
@ Import Namespace=”System.io”
@ Import Namespace=”System.text”
@ Import Namespace=”System.Threading”
‘密钥
const t_Key = “p3nfFnyuRdnHPizW75K2a6d53xZ8rkXZ”
‘矢量
const t_IV = “”
Dim str as string
str=Request(”Encodestr”)
Dim byt As Byte()
Dim Mcsp As System.Security.Cryptography.SymmetricAlgorithm =System.Security.Cryptography.TripleDESCryptoServiceProvider.Create
‘已经附带了Base64的解密功能
Mcsp.Key = Convert.FromBase64String(T_key)
Mcsp.IV = Convert.FromBase64String(T_iv)
‘指定加密的运算模式
Dim ct2 As System.Security.Cryptography.ICryptoTransform
Dim ms2 As System.IO.MemoryStream
Dim cs2 As System.Security.Cryptography.CryptoStream
MCSP.Mode = System.Security.Cryptography.CipherMode.ECB
‘获取或设置加密算法的填充模式
Mcsp.Padding = System.Security.Cryptography.PaddingMode.PKCS7
ct2 = MCSP.CreateDecryptor(MCSP.Key, MCSP.IV)
byt = Convert.FromBase64String(str)
ms2 = new System.IO.MemoryStream()
cs2 = new System.Security.Cryptography.CryptoStream(ms2, ct2, System.Security.Cryptography.CryptoStreamMode.Write)
cs2.Write(byt, 0, byt.Length)
cs2.FlushFinalBlock()
cs2.Close()
‘Decodestr得出解密的字符串
Decodestr = System.Text.Encoding.UTF8.GetString(ms2.ToArray())
出自:http://richardf.spaces.live.com/blog/cns!8b8347dad5bfe57!464.entry