| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2032 人关注过本帖, 1 人收藏
标题:VB6 加密与解密
只看楼主 加入收藏
seafish011
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:1
帖 子:167
专家分:694
注 册:2011-11-8
结帖率:90%
收藏(1)
已结贴  问题点数:20 回复次数:7 
VB6 加密与解密
最近在学习加密与解密,突然在网上看到这几段代码,我把text1的值代入到Hash函数中运行得到aH值,但是我不知道该怎样把aH的值还原为text1原来的值。
不知道有没有大手可以帮下忙指点下或者解释下。代码如下:
程序代码:
Private Sub Command1_Click()
    Dim aH
    aH = Hash(CStr(Text1.Text))
    Debug.Print aH
End Sub

Public Function Hash(ET As String) As String
    Dim BitLenString As String, KeyString As String, FileText As String
    BitLenString = "12345678"
    KeyString = ET & BitLenString
    Call Initialize(KeyString)
    '根据KeyString产生随机数序列
    FileText = ET & BitLenString
    Call DoXor(FileText)
    '根据上述随机数序列对FileText加密
    KeyString = FileText
    Call Initialize(KeyString)
    '根据上述的加密结果产生新的随机数序列
    FileText = BitLenString
    Call DoXor(FileText)
    '根据上述随机数序列对FileText加密,8位字符
    Hash = FileText
    '8位字符送作HASH值
End Function

Public Sub DoXor(ByRef msFileText As String)
    Dim intC As Integer
    Dim intB As Integer
    Dim lngI As Long
    '下面,用Rnd产生随机序列数,然后根据Int(Rnd * 2 ^ 7)得到一个对应整数,
    '再用该整数与msFileText中字符XOR.
    For lngI = 1 To Len(msFileText)
        intC = AscW(Mid(msFileText, lngI, 1))
        intB = Int(Rnd * 2 ^ 7)
        '选用< =127可正确处理汉字,ChrW(n):n 有一个范围
        Mid(msFileText, lngI, 1) = ChrW(intC Xor intB)
    Next lngI
End Sub

Private Sub Initialize(vKeyString As String)
    Dim intI As Integer, intJ As Integer
    Randomize Rnd(-1)  '得到初始值(种子值)
    '每次调用初始值均相同
    '根据初始值(种子值)得到随机数序列,每次调用Initialize时,初始值均相同。只要vKeyString相同,所产生的随机数序列一定相同
    For intI = 1 To Len(vKeyString)
        intJ = Rnd(-Rnd * AscW(Mid(vKeyString, intI, 1)))
        Randomize intJ
    Next intI
End Sub
搜索更多相关主题的帖子: 加密 
2013-03-21 20:43
mrye
Rank: 2
等 级:论坛游民
帖 子:14
专家分:36
注 册:2013-3-21
收藏
得分:2 
TEXT的值先存储起来
2013-03-22 00:27
seafish011
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:1
帖 子:167
专家分:694
注 册:2011-11-8
收藏
得分:0 
以下是引用mrye在2013-3-22 00:27:17的发言:

TEXT的值先存储起来

我想要的是一个aH还原为text1的逆向过程,如果能实现的话,那这些代码可以作为一个加密与解密来用。
2013-03-22 02:04
seafish011
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:1
帖 子:167
专家分:694
注 册:2011-11-8
收藏
得分:0 
有人可以给些意见么?
2013-03-22 17:26
seafish011
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:1
帖 子:167
专家分:694
注 册:2011-11-8
收藏
得分:0 
到结贴时间了,还是没人给出意见.
2013-03-24 06:15
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:6 
不懂啊  你可以先研究一下 国际上著名的加密算法   

有些是单程  就是无法还原的  
有些可以根据加密后的结果反推回最初的

DO IT YOURSELF !
2013-03-24 06:52
lowxiong
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:27
帖 子:652
专家分:3402
注 册:2008-5-7
收藏
得分:6 
你提供的这个算法是不可逆的。该算法用提供的文本两次计算随机数系列,不同的字符得到的随机数系列不同,最后用随机数系列和固定的“12345678”字符异或得到密匙,用随机数时实际上就丢弃了原始文本,不过vb产生随机数也是有规律的,比如你每次第一次rnd的数字都一样,因此相同文本可得到相同随机数系列,从一定程度上可逆,但最后一步就彻底丢掉原始文本信息了,因此不可逆。
2013-03-24 09:42
风吹过b
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:364
帖 子:4941
专家分:30047
注 册:2008-10-15
收藏
得分:6 
Hash函数   一般情况下是不可逆的,MD5 也属于这种不可逆的。

授人于鱼,不如授人于渔
早已停用QQ了
2013-03-24 13:46
快速回复:VB6 加密与解密
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.012616 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved