找回密码
 加入我们

QQ登录

只需一步,快速开始

搜索
查看: 4896|回复: 2

大家帮帮忙..看看这个程序..

[复制链接]

6

主题

2

回帖

0

精华

金牌会员

积分
1037
发表于 2005-7-20 21:54:01 | 显示全部楼层 |阅读模式
<P>下面是一个密码加密的程序..但我看了很久都看不懂..我想请高手帮我看一下。.想知道NumericPassword函数是干什么用的?返回的是什么?cipher函数的原理又是什么??</P>
<P>Option Explicit
Dim Cipher_text As String
Private Sub Form_Load()
Debug.Print Hex((Asc("中")))
Debug.Print Hex((Asc("国")))</P>
<P>Text1 = "": Text2 = ""
End Sub
Private Sub Text1_KeyPress(KeyAscii As Integer)
Dim Result As Integer
If KeyAscii = 13 Then
Result = MsgBox(" 密码是否正确 ?", vbYesNo + vbExclamation)
   If Result = 6 Then
    Cipher Text1.Text, Text1.Text, Cipher_text
   Text2 = Cipher_text
    Open App.Path + "\PassWord.txt" For Output As #1
    Write #1, Cipher_text
    Close #1
    Exit Sub
   Else
     Text1.Text = ""
     Text1.SetFocus
  End If
  Exit Sub
End If
End Sub
Private Sub Command1_Click()
    Unload Me
    End
End Sub
Private Sub Cipher(ByVal Password As String, ByVal From_text As String, To_text As String)
Const MIN_ASC = 32  ' Space.
Const MAX_ASC = 126 ' ~.
Const NUM_ASC = MAX_ASC - MIN_ASC + 1
Dim Offset As Long
Dim Str_len As Integer, I As Integer, Ch As Integer
    Offset = NumericPassword(Password)
    Rnd -1
    Randomize Offset
    Str_len = Len(From_text)
    For I = 1 To Str_len
        Ch = Asc(Mid$(From_text, I, 1))
        If Ch &gt;= MIN_ASC And Ch &lt;= MAX_ASC Then
            Ch = Ch - MIN_ASC
            Offset = Int((NUM_ASC + 1) * Rnd)
            Ch = ((Ch + Offset) Mod NUM_ASC)
            Ch = Ch + MIN_ASC
            To_text = To_text &amp; Chr$(Ch)
        End If
    Next I
End Sub
Private Function NumericPassword(ByVal Password As String) As Long
Dim Value As Long, Ch As Long, Shift1 As Long, Shift2 As Long
Dim I As Integer, Str_len As Integer
   Str_len = Len(Password)
    For I = 1 To Str_len
        Ch = Asc(Mid$(Password, I, 1))
        Value = Value Xor (Ch * 2 ^ Shift1)
        Value = Value Xor (Ch * 2 ^ Shift2)
        Shift1 = (Shift1 + 7) Mod 19
        Shift2 = (Shift2 + 13) Mod 23
    Next I
    NumericPassword = Value
End Function</P>

<P>
</P>

275

主题

3017

回帖

1

精华

管理员

嗷嗷叫的老马

积分
17064

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

QQ
发表于 2005-7-21 00:27:54 | 显示全部楼层
<P>看了下,也看得不是很明白。</P><P>觉得NumericPassword返回的是一个用于初始化随机种子的值,它与输入的字符串有关。</P><P>而Cipher函数就根据这个值所生成的随机数来加密(同样的初始化值,使用RND时出来的随机数是一样的)。</P><P>个人意见。。。。十二点半了,睡觉。。。。</P><P>还有,Cipher不能处理中文。它只对一定范围里的字符进行处理。</P>
我就是嗷嗷叫的老马了......

275

主题

3017

回帖

1

精华

管理员

嗷嗷叫的老马

积分
17064

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

QQ
发表于 2005-7-22 21:17:34 | 显示全部楼层
<P>最近我在搞给中文加密的代码,头痛中.....</P><P>OK了后会发代码上来.</P>
我就是嗷嗷叫的老马了......

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

本版积分规则

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