找回密码
 加入我们

QQ登录

只需一步,快速开始

搜索
查看: 14397|回复: 12

[分享]DES加解密类(VB6.0源代码)

[复制链接]

275

主题

3017

回帖

1

精华

管理员

嗷嗷叫的老马

积分
17064

论坛牛人贡献奖关注奖最佳版主进步奖人气王疯狂作品奖精英奖赞助论坛勋章乐于助人勋章

QQ
发表于 2007-3-26 16:51:21 | 显示全部楼层 |阅读模式
<p>在问专家网站里找的,原网址如下:</p><p>http://www.china-askpro.com/msg1/qa88.shtml</p><p>这里是我上传的:</p><p> OsYWioQU.cls (20.38 KB, 下载次数: 30666) </p>
我就是嗷嗷叫的老马了......

30

主题

96

回帖

0

精华

铂金会员

积分
1548
发表于 2007-3-26 18:49:08 | 显示全部楼层
牛B,我喜欢

76

主题

375

回帖

0

精华

铜牌会员

积分
231
发表于 2007-4-6 11:09:31 | 显示全部楼层
<p>'我没有用三重DES,只要能实现简单的加解密就行了<br/>'但我运行这段代码时总出现"下标越界"的错误<br/>'作者说已经经过测试了,我怀疑是我的代码有问题<br/>'大虾能否帮忙做个例子?</p><p>'-------------------------------------------------------------<br/>''以下是我实现加密的代码<br/>'传进一个字符串 str<br/>'返回Encode 加密后的串<br/>'-------------------------------------------------------------<br/>Public Function Encode(ByVal str As String) As String</p><p><br/>&nbsp;&nbsp;&nbsp; Dim bin() As Byte&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; '输入<br/>&nbsp;&nbsp;&nbsp; Dim bout() As Byte&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; '输出<br/>&nbsp;&nbsp;&nbsp; Dim bKey() As Byte&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'Key<br/>&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp; Dim sResult As String<br/>&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp; bin = StrConv(str, vbFromUnicode)<br/>&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp; DES.SetKey bKey<br/>&nbsp;&nbsp;&nbsp; DES.EncryptDes_ArrToArr bin, bout, , 2</p><p>&nbsp;&nbsp;&nbsp; sResult = StrConv(bout, vbUnicode)<br/>&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp; Encode = sResult<br/>End Function</p>

275

主题

3017

回帖

1

精华

管理员

嗷嗷叫的老马

积分
17064

论坛牛人贡献奖关注奖最佳版主进步奖人气王疯狂作品奖精英奖赞助论坛勋章乐于助人勋章

QQ
 楼主| 发表于 2008-12-16 16:15:46 | 显示全部楼层
<p>增加一个调用例子:</p>
<p>&nbsp;</p>
<p><font face="Verdana">Sub Main()<br/>&nbsp;&nbsp;&nbsp; Dim I As New cDES<br/>&nbsp;&nbsp;&nbsp; Dim key1(7) As Byte<br/>&nbsp;&nbsp;&nbsp; Dim tmpArr1() As Byte, tmpArr2() As Byte, tmpArr3() As Byte<br/>&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp; key1(0) = 1: key1(1) = 2: key1(2) = 3: key1(3) = 4: key1(4) = 5: key1(5) = 6: key1(6) = 7: key1(7) = 8<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; '以上是密钥<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp; tmpArr1 = StrConv("www.m5home.com", vbUnicode)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; '以上是欲加密的内容<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp; I.SetKey key1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; '设置密钥<br/>&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp; MsgBox "开始加密"<br/>&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp; I.EncryptDes_ArrToArr tmpArr1, tmpArr2&nbsp; '加密<br/>&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp; MsgBox "加密后的内容 = " &amp; vbCrLf &amp; StrConv(tmpArr2, vbUnicode)<br/>&nbsp;&nbsp;&nbsp; Debug.Print StrConv(tmpArr2, vbFromUnicode)<br/>&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp; MsgBox "开始解密"<br/>&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp; I.EncryptDes_ArrToArr tmpArr2, tmpArr3, , 2&nbsp;&nbsp;&nbsp;&nbsp; '解密<br/>&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp; MsgBox "解密后的内容 = " &amp; vbCrLf &amp; StrConv(tmpArr3, vbFromUnicode)<br/>&nbsp;&nbsp;&nbsp; Debug.Print StrConv(tmpArr3, vbFromUnicode)<br/>End Sub</font></p>
我就是嗷嗷叫的老马了......

0

主题

7

回帖

0

精华

铜牌会员

积分
216
发表于 2008-12-16 16:19:49 | 显示全部楼层
谢谢 老马 刚才我在QQ里问的你

0

主题

7

回帖

0

精华

铜牌会员

积分
216
发表于 2008-12-19 12:39:34 | 显示全部楼层
<p>老马 </p>
<p><font face="Verdana">如果我要对"医院"加密,好像解密出来的是"医b".<br/>我试了下,只要最后一个字符是"院",好像解密都有问题</font>,"院"经过加密解密后就变成了"b",不知道是什么原因</p>

275

主题

3017

回帖

1

精华

管理员

嗷嗷叫的老马

积分
17064

论坛牛人贡献奖关注奖最佳版主进步奖人气王疯狂作品奖精英奖赞助论坛勋章乐于助人勋章

QQ
 楼主| 发表于 2008-12-19 14:37:40 | 显示全部楼层
<p>中文加密的话可能还需要研究一下</p>
<p>&nbsp;</p>
<p>晚上回来看看.</p>
我就是嗷嗷叫的老马了......

275

主题

3017

回帖

1

精华

管理员

嗷嗷叫的老马

积分
17064

论坛牛人贡献奖关注奖最佳版主进步奖人气王疯狂作品奖精英奖赞助论坛勋章乐于助人勋章

QQ
 楼主| 发表于 2008-12-19 23:55:03 | 显示全部楼层
<div class="msgheader">QUOTE:</div><div class="msgborder"><b><font face="Verdana"><br/>Sub Main()<br/>&nbsp;&nbsp;&nbsp; Dim I As New cDES<br/>&nbsp;&nbsp;&nbsp; Dim key1(7) As Byte<br/>&nbsp;&nbsp;&nbsp; Dim tmpArr1() As Byte, tmpArr2() As Byte, tmpArr3() As Byte<br/>&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp; key1(0) = 1: key1(1) = 2: key1(2) = 3: key1(3) = 4: key1(4) = 5: key1(5) = 6: key1(6) = 7: key1(7) = 8<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; '以上是密钥<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp; tmpArr1 = StrConv("测试中文字符串", vbFromUnicode)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; '以上是欲加密的内容<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp; I.SetKey key1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; '设置密钥<br/>&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp; MsgBox "开始加密"<br/>&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp; I.EncryptDes_ArrToArr tmpArr1, tmpArr2&nbsp; '加密<br/>&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp; MsgBox "加密后的内容 = " &amp; vbCrLf &amp; StrConv(tmpArr2, vbUnicode)<br/>&nbsp;&nbsp;&nbsp; Debug.Print StrConv(tmpArr2, vbUnicode)<br/>&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp; MsgBox "开始解密"<br/>&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp; I.EncryptDes_ArrToArr tmpArr2, tmpArr3, , 2&nbsp;&nbsp;&nbsp;&nbsp; '解密<br/>&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp; MsgBox "解密后的内容 = " &amp; vbCrLf &amp; StrConv(tmpArr3, vbUnicode)<br/>&nbsp;&nbsp;&nbsp; Debug.Print StrConv(tmpArr3, vbUnicode)<br/>End Sub<br/></font></b></div>
<p>&nbsp;</p>
<p>是我的一个低级错误...........暴汗呀[em06]</p>
<p>&nbsp;</p>
<p>转换进去时先用<font face="Verdana">vbFromUnicode</font>......因为VB里的字符串本身就是UNICODE的.....</p>
<p>&nbsp;</p>
<p>出来后再<font face="Verdana">vbUnicode</font>..........汗汗汗......</p>
<p>&nbsp;</p>
<p>要不是魏滔序一句点醒,我还打算自己写个字节数组转换/还原函数[em227]</p>
<p>&nbsp;</p>
<p>最近智商严重下降- -!</p>
我就是嗷嗷叫的老马了......

0

主题

7

回帖

0

精华

铜牌会员

积分
216
发表于 2008-12-23 09:39:04 | 显示全部楼层
嘿嘿 ,谢谢老马 ,学习老马严谨的治学态度。[em51]

0

主题

7

回帖

0

精华

铜牌会员

积分
216
发表于 2008-12-23 14:46:00 | 显示全部楼层
<p><font face="Verdana">老马 又有新的问题了<br/>我在你给的实例基础上,写了个函数,目的是在程序中方便使用,比如对数据加密后写进数据库,然后从数据库中取出数据再解密。字符串和字节数组的转换,我还搞不太明白,不知道我的函数中出了什么问题,帮忙看下吧 谢谢!</font></p>
<p><font face="Verdana">Public Function gEncryptDes(ByVal strEncryptString <font face="Verdana">As String</font>, ByVal intFlag As Integer) As String<br/>&nbsp;&nbsp;&nbsp; '参数intFlag,1表示加密,2表示解密<br/>&nbsp;&nbsp;&nbsp; Dim i As New cDES<br/>&nbsp;&nbsp;&nbsp; Dim key1(7) As Byte<br/>&nbsp;&nbsp;&nbsp; Dim tmpArr1() As Byte, tmpArr2() As Byte<br/>&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp; Dim strTemp As String<br/>&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp; key1(0) = 1: key1(1) = 2: key1(2) = 3: key1(3) = 4: key1(4) = 5: key1(5) = 6: key1(6) = 7: key1(7) = 8<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; '以上是密钥<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp; i.SetKey key1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; '设置密钥<br/>&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp; If intFlag = 1 Then '加密<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; tmpArr1 = StrConv(strEncryptString, vbFromUnicode) '欲加密的内容<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; i.EncryptDes_ArrToArr tmpArr1, tmpArr2&nbsp; '加密<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; strTemp = StrConv(tmpArr2, vbUnicode)<br/>&nbsp;&nbsp;&nbsp; Else '解密<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; tmpArr1 = StrConv(strEncryptString, vbFromUnicode)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; i.EncryptDes_ArrToArr tmpArr1, tmpArr2, , 2&nbsp;&nbsp;&nbsp;&nbsp; '解密<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; strTemp = StrConv(tmpArr2, vbUnicode)<br/>&nbsp;&nbsp;&nbsp; End If<br/>&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp; gEncryptDes = strTemp<br/>End Function<br/></font></p>
<p>我在程序中这样调用:</p>
<p>&nbsp;</p>
<p><font face="Verdana">Private Sub Command1_Click()<br/>&nbsp; <font face="Verdana">Debug.Print</font> gEncryptDes(gEncryptDes("大家好", 1), 2)</font></p>
<p><font face="Verdana">End Sub<br/></font></p>
<p>显示的结果不是"大家好",而是乱码。</p>
[此贴子已经被作者于2008-12-23 16:10:36编辑过]

0

主题

7

回帖

0

精华

铜牌会员

积分
216
发表于 2008-12-23 15:54:44 | 显示全部楼层
<p>已经解决了</p>
<p><font face="Verdana">&nbsp;&nbsp;&nbsp; If intFlag = 1 Then '加密<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; tmpArr1 = StrConv(strEncryptString, vbFromUnicode) '欲加密的内容<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; i.EncryptDes_ArrToArr tmpArr1, tmpArr2&nbsp; '加密<br/>'&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; strTemp = StrConv(tmpArr2, vbUnicode)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; strTemp = tmpArr2<br/>&nbsp;&nbsp;&nbsp; Else '解密<br/>'&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; tmpArr1 = StrConv(strEncryptString, vbFromUnicode)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; tmpArr1 = strEncryptString<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; i.EncryptDes_ArrToArr tmpArr1, tmpArr2, , 2&nbsp;&nbsp;&nbsp;&nbsp; '解密<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; strTemp = StrConv(tmpArr2, vbUnicode)<br/>&nbsp;&nbsp;&nbsp; End If</font></p>
<p><font face="Verdana"></font>&nbsp;</p>
<p><font face="Verdana">错误的部分已经注释掉了 还是谢谢老马</font></p>
<p><font face="Verdana">原来字节数组和字符串之间可以直接赋值的,晕</p>
<p><br/></font><br/></p>

0

主题

4

回帖

0

精华

初来乍到

积分
296
发表于 2009-1-4 00:44:21 | 显示全部楼层
<p>哪里有hex之类的教程啊, 谢谢啦</p>

275

主题

3017

回帖

1

精华

管理员

嗷嗷叫的老马

积分
17064

论坛牛人贡献奖关注奖最佳版主进步奖人气王疯狂作品奖精英奖赞助论坛勋章乐于助人勋章

QQ
 楼主| 发表于 2009-1-4 20:58:20 | 显示全部楼层
什么HEX教程?加密?
我就是嗷嗷叫的老马了......

您需要登录后才可以回帖 登录 | 加入我们

本版积分规则

快速回复 返回顶部 返回列表