|
楼主 |
发表于 2011-8-14 22:49
|
显示全部楼层
本帖最后由 XZ19860527 于 2011-8-15 07:41 编辑
注册操作源码及加密解密源码
RC4算法及取得硬盘序列号来自互联网.
点了插入附件还是看不到自己的附件在哪里啊?- '===========================================================
- ' 过程及函数名: RC4
- ' 版本号 : 1.0
- ' 说明 : 本函数作用:RC4 加密及解密,可以加解密中文
- ' 引用 : --
- ' 输入参数 : SourceWords 文本,源文字
- ' KeyWords 文本,密码
- ' 输出值 : --
- ' 返回值 : 字符串,编码后的文本
- ' 调用演示 : RC4 "a","b"
- ' (或请直接看 test 过程。)
- ' 最后修改日期: 2006-12-13 16:22:00
- ' 示例地址 : http://access911.net/?kbid;72FABE1E15DCEDF3
- ' 作者 : cg1
- ' 网站 : http://access911.net
- ' 电子邮件 : access911@gmail.com
- ' 版权 : 作者保留一切权力,
- ' 请在公布本代码时将本段说明一起公布,谢谢!
- '===========================================================
- Public Function RC4(SourceWords As String, _
- key As String) As String
- Dim s(0 To 255) As Byte, k(0 To 255) As Byte, i As Long
- Dim j As Long, temp As Byte, y As Byte, t As Long, X As Long
- Dim OutWords As String
-
- For i = 0 To 255
- s(i) = i
- Next
-
- j = 1
- For i = 0 To 255
- If j > LenB(key) Then j = 1
- k(i) = AscB(MidB(key, j, 1))
- j = j + 1
- Next i
-
- j = 0
- For i = 0 To 255
- j = (j + s(i) + k(i)) Mod 256
- temp = s(i)
- s(i) = s(j)
- s(j) = temp
- Next i
-
- i = 0
- j = 0
- For X = 1 To LenB(SourceWords)
- i = (i + 1) Mod 256
- j = (j + s(i)) Mod 256
- temp = s(i)
- s(i) = s(j)
- s(j) = temp
- t = (s(i) + (s(j) Mod 256)) Mod 256
- y = s(t)
-
- OutWords = OutWords & ChrB(AscB(MidB(SourceWords, X, 1)) Xor y)
- Next
- RC4 = OutWords
- End Function
- '===========================================================
- ' 过程及函数名: StrToHex
- ' 版本号 : 1.0
- ' 说明 : 本函数作用:将普通字符串编码为16进制字符串
- ' 引用 : --
- ' 输入参数 : Words 文本,需编码的字符串
- ' 输出值 : --
- ' 返回值 : String 文本,编码后的16进制字符串
- ' 出错时返回 "" (零长度字符串)
- ' 调用演示 : StrToHex "哈哈哈"
- ' (或请直接看 test 过程。)
- ' 最后修改日期: 2006-12-13 16:22:00
- ' 示例地址 : http://access911.net/?kbid;72FABE1E15DCEDF3
- ' 作者 : cg1
- ' 网站 : http://access911.net
- ' 电子邮件 : access911@gmail.com
- ' 版权 : 作者保留一切权力,
- ' 请在公布本代码时将本段说明一起公布,谢谢!
- '===========================================================
- Public Function StrToHex(ByVal Words As String) As String
- '本函数在不改动 RC4 编码的基础上,对 RC4 的结果进行再编码
- '因此在效率上比将本编码直接加入 RC4 函数的方式稍慢
- Dim i As Long
- Dim strResult As String
- On Error GoTo StrToHex_Err
-
- For i = 1 To LenB(Words)
- strResult = strResult & Right("00" & CStr(Hex(AscB(MidB(Words, i, 1)))), 2)
- Next
-
- StrToHex = LCase(strResult)
-
-
-
- Exit Function
- StrToHex_Err:
- '出错时直接返回零长度字符串
- Debug.Print Err.Number & Err.Description
- StrToHex = ""
-
- End Function
- '===========================================================
- ' 过程及函数名: HexToStr
- ' 版本号 : 1.0
- ' 说明 : 本函数作用:将16进制字符串解码为普通字符串
- ' 引用 : --
- ' 输入参数 : Words 文本,需解码的字符串
- ' 输出值 : --
- ' 返回值 : String 文本,解码后的普通文本
- ' 出错时返回 "" (零长度字符串)
- ' 调用演示 : HexToStr "312d7a41fcf4b8803d991d929d25d1c8e249e562153efe1dc65b"
- ' (或请直接看 test 过程。)
- ' 最后修改日期: 2006-12-13 16:22:00
- ' 示例地址 : http://access911.net/?kbid;72FABE1E15DCEDF3
- ' 作者 : cg1
- ' 网站 : http://access911.net
- ' 电子邮件 : access911@gmail.com
- ' 版权 : 作者保留一切权力,
- ' 请在公布本代码时将本段说明一起公布,谢谢!
- '===========================================================
- Public Function HexToStr(ByVal Words As String) As String
- '本函数在不改动 RC4 编码的基础上,对 RC4 的结果进行再编码
- '因此在效率上比将本编码直接加入 RC4 函数的方式稍慢
- Dim i As Long
- Dim strResult As String
- On Error GoTo HexToStr_Err
-
- For i = 1 To Len(Words) Step 2
- strResult = strResult & ChrB(CLng("&H" & Mid(Words, i, 2)))
- Next
-
- HexToStr = strResult
-
-
- Exit Function
- HexToStr_Err:
- '出错时直接返回零长度字符串
- Debug.Print Err.Number & Err.Description
- HexToStr = ""
-
- End Function
复制代码 取得硬盘序列号的代码请参考袁版 VBA常用技巧 技巧182 |
评分
-
1
查看全部评分
-
|