des加密问题

vpqkkk 2010-03-26 04:07:56
我想使用des加密,网上找到这段代码想试试:

imports system.web.security
imports system.security
imports system.security.cryptography
imports system.text

Public Shared Function encrypt(ByVal ptoencrypt As String, ByVal skey As String) As String
Dim des As New descryptoserviceprovider()
Dim inputbytearray() As Byte
inputbytearray = encoding.default.getbytes(ptoencrypt)
'建立加密对象的密钥和偏移量()
'原文使用asciiencoding.ascii方法的getbytes方法()
'使得输入密码必须输入英文文本()
des.key = asciiencoding.ascii.getbytes(skey)
des.iv = asciiencoding.ascii.getbytes(skey)
' 写二进制数组到加密流()
'(把内存流中的内容全部写入)
Dim ms As New system.io.memorystream()
Dim cs As New cryptostream(ms, des.createencryptor, cryptostreammode.write)
'写二进制数组到加密流()
'(把内存流中的内容全部写入)
cs.write(inputbytearray, 0, inputbytearray.length)
cs.flushfinalblock()

'建立输出字符串()
Dim ret As New stringbuilder()
Dim b As Byte
For Each b In ms.toarray()
ret.appendformat("{0:x2}", b)
Next

Return ret.tostring()
End Function

'解密方法
Public Shared Function decrypt(ByVal ptodecrypt As String, ByVal skey As String) As String
Dim des As New descryptoserviceprovider()
'把字符串放入byte数组()
Dim len As Integer
len = ptodecrypt.length / 2 - 1
Dim inputbytearray(len) As Byte
Dim x, i As Integer
For x = 0 To len
i = convert.toint32(ptodecrypt.substring(x * 2, 2), 16)
inputbytearray(x) = CType(i, Byte)
Next
'建立加密对象的密钥和偏移量, 此值重要, 不能修改
des.key = asciiencoding.ascii.getbytes(skey)
des.iv = asciiencoding.ascii.getbytes(skey)
Dim ms As New system.io.memorystream()
Dim cs As New cryptostream(ms, des.createdecryptor, cryptostreammode.write)
cs.write(inputbytearray, 0, inputbytearray.length)
cs.flushfinalblock()
Return encoding.default.getstring(ms.toarray)

End Function

...........................................................................................
但提示以下错误,应该如何解决?

1.未能找到引用的组件"microsoft.office.interop.excel"
2.未能找到引用的组件"VBIDE"
3.无法找到类型库"microsoft.office.core"的包装程序集
4.无法找到类型库"microsoft.office.interop.excel"的包装程序集
5.无法找到类型库"VBIDE"的包装程序集
...全文
170 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
vpqkkk 2010-03-29
  • 打赏
  • 举报
回复
有没有人知道呢?
yanlongwuhui 2010-03-29
  • 打赏
  • 举报
回复
代码中有对EXCEL对象的操作,但你没有进行对象的引用
qshurufa 2010-03-29
  • 打赏
  • 举报
回复
可以试试这个
#Region "Des加密-解密"

Private Const KEY_64 = "12345678" '8个字符,64位
Private Const IV_64 = "98765432" '8个字符,64位

''' <summary>
''' Des解密
''' </summary>
''' <param name="sDecryptData">要解密的字符串</param>
Public Function DESDecrypt(ByVal sDecryptData As String) As String
Dim byKEY() As Byte = System.Text.ASCIIEncoding.ASCII.GetBytes(KEY_64)
Dim byIV() As Byte = System.Text.ASCIIEncoding.ASCII.GetBytes(IV_64)
Dim byEnc() As Byte
Try
byEnc = Convert.FromBase64String(sDecryptData)
Catch ex As Exception
Return Nothing
End Try
Dim CrypToProvider As New Security.Cryptography.DESCryptoServiceProvider()
Dim ms As New IO.MemoryStream(byEnc)
Dim cst As New Security.Cryptography.CryptoStream(ms, CrypToProvider.CreateDecryptor(byKEY, byIV), _
Security.Cryptography.CryptoStreamMode.Read)
Dim sr As New IO.StreamReader(cst)
Return sr.ReadToEnd()
End Function

''' <summary>
''' Des加密
''' </summary>
''' <param name="sEncryptData">要加密的字符串</param>
Public Function DESEncrypt(ByVal sEncryptData As String) As String
Dim byKEY() As Byte = System.Text.ASCIIEncoding.ASCII.GetBytes(KEY_64)
Dim byIV() As Byte = System.Text.ASCIIEncoding.ASCII.GetBytes(IV_64)
Dim CrypToProvider As New Security.Cryptography.DESCryptoServiceProvider '定义数据加密标准
Dim i As Integer = CrypToProvider.KeySize() '获取和设置对称算法所用密钥的大小(以"位"为单位)
Dim ms As New IO.MemoryStream '创建存储区内存流
Dim cst As New Security.Cryptography.CryptoStream(ms, CrypToProvider.CreateEncryptor(byKEY, byIV), _
Security.Cryptography.CryptoStreamMode.Write) '将数据流连接到加密转换的流
Dim sw As New IO.StreamWriter(cst)
sw.Write(sEncryptData)
sw.Flush()
cst.FlushFinalBlock()
sw.Flush()
Return Convert.ToBase64String(ms.GetBuffer(), 0, CType(ms.Length, Integer))
End Function
#End Region
vpqkkk 2010-03-26
  • 打赏
  • 举报
回复
自己顶一下

16,555

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧