找回密码
 加入
搜索
查看: 12031|回复: 32

[系统综合] 额,有没有解密MD5的函数,我是用附件中的md5.au3加密的

[复制链接]
发表于 2009-9-7 15:07:27 | 显示全部楼层 |阅读模式
或者有什么加解密的函数?可以不要MD5的

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
发表于 2009-9-7 15:16:33 | 显示全部楼层
本帖最后由 afan 于 2009-9-7 15:17 编辑

md5没试过,我用RC4加解密~
#Include <String.au3>
_StringEncrypt($i_Encrypt, $s_EncryptText, $s_EncryptPassword[, $i_EncryptLevel = 1])

这个函数需要Ansi编译才行

评分

参与人数 1金钱 +30 贡献 +10 收起 理由
kn007 + 30 + 10 额,我来试试先,先不结贴,谢谢你

查看全部评分

发表于 2009-9-7 15:21:19 | 显示全部楼层
还有个不需要编译就OK的,如需要我再找找

评分

参与人数 1金钱 +10 收起 理由
kn007 + 10 如果有不用ansi的,麻烦你帮忙找些,先谢谢 ...

查看全部评分

 楼主| 发表于 2009-9-7 15:21:29 | 显示全部楼层
额,我来试试先,先不结贴,谢谢你
发表于 2009-9-7 15:30:02 | 显示全部楼层
MD5没有反解,只有穷尽枚举破解,所以现在有些网站收集了无数个MD5值,以便去查
_StringEncrypt.au3原来的自带的,只能ANSI编译才行,后来坛子里有文仁兄修改了这个文件,支持UNICODE编译了,可以搜搜,呵呵
发表于 2009-9-7 15:33:33 | 显示全部楼层
ok,找着了~
Func _StringEncryptW($i_Encrypt, $s_EncryptText, $s_EncryptPassword, $i_EncryptLevel = 1)
        If $i_Encrypt <> 0 And $i_Encrypt <> 1 Then
                SetError(1)
                Return ''
        ElseIf $s_EncryptText = '' Or $s_EncryptPassword = '' Then
                SetError(1)
                Return ''
        Else
                If Number($i_EncryptLevel) <= 0 Or Int($i_EncryptLevel) <> $i_EncryptLevel Then $i_EncryptLevel = 1
                Local $v_EncryptModified, $i_EncryptCountH, $i_EncryptCountG, $v_EncryptSwap, $av_EncryptBox[256][2]
                Local $i_EncryptCountA, $i_EncryptCountB, $i_EncryptCountC, $i_EncryptCountD, $i_EncryptCountE
                Local $v_EncryptCipher, $v_EncryptCipherBy
                If $i_Encrypt = 1 Then
                        For $i_EncryptCountF = 0 To $i_EncryptLevel Step 1
                                $i_EncryptCountG = ''
                                $i_EncryptCountH = ''
                                $v_EncryptModified = ''
                                For $i_EncryptCountG = 1 To StringLen($s_EncryptText)
                                        If $i_EncryptCountH = StringLen($s_EncryptPassword) Then
                                                $i_EncryptCountH = 1
                                        Else
                                                $i_EncryptCountH += 1
                                        EndIf
                                        $v_EncryptModified = $v_EncryptModified & ChrW(BitXOR(AscW(StringMid($s_EncryptText, $i_EncryptCountG, 1)), AscW(StringMid($s_EncryptPassword, $i_EncryptCountH, 1)), 255))
                                Next
                                $s_EncryptText = $v_EncryptModified
                                $i_EncryptCountA = ''
                                $i_EncryptCountB = 0
                                $i_EncryptCountC = ''
                                $i_EncryptCountD = ''
                                $i_EncryptCountE = ''
                                $v_EncryptCipherBy = ''
                                $v_EncryptCipher = ''
                                $v_EncryptSwap = ''
                                $av_EncryptBox = ''
                                Local $av_EncryptBox[256][2]
                                For $i_EncryptCountA = 0 To 255
                                        $av_EncryptBox[$i_EncryptCountA][1] = AscW(StringMid($s_EncryptPassword, Mod($i_EncryptCountA, StringLen($s_EncryptPassword)) + 1, 1))
                                        $av_EncryptBox[$i_EncryptCountA][0] = $i_EncryptCountA
                                Next
                                For $i_EncryptCountA = 0 To 255
                                        $i_EncryptCountB = Mod(($i_EncryptCountB + $av_EncryptBox[$i_EncryptCountA][0] + $av_EncryptBox[$i_EncryptCountA][1]), 256)
                                        $v_EncryptSwap = $av_EncryptBox[$i_EncryptCountA][0]
                                        $av_EncryptBox[$i_EncryptCountA][0] = $av_EncryptBox[$i_EncryptCountB][0]
                                        $av_EncryptBox[$i_EncryptCountB][0] = $v_EncryptSwap
                                Next
                                For $i_EncryptCountA = 1 To StringLen($s_EncryptText)
                                        $i_EncryptCountC = Mod(($i_EncryptCountC + 1), 256)
                                        $i_EncryptCountD = Mod(($i_EncryptCountD + $av_EncryptBox[$i_EncryptCountC][0]), 256)
                                        $i_EncryptCountE = $av_EncryptBox[Mod(($av_EncryptBox[$i_EncryptCountC][0] + $av_EncryptBox[$i_EncryptCountD][0]), 256)][0]
                                        $v_EncryptCipherBy = BitXOR(AscW(StringMid($s_EncryptText, $i_EncryptCountA, 1)), $i_EncryptCountE)
                                        $v_EncryptCipher &= Hex($v_EncryptCipherBy, 2)
                                Next
                                $s_EncryptText = $v_EncryptCipher
                        Next
                Else
                        For $i_EncryptCountF = 0 To $i_EncryptLevel Step 1
                                $i_EncryptCountB = 0
                                $i_EncryptCountC = ''
                                $i_EncryptCountD = ''
                                $i_EncryptCountE = ''
                                $v_EncryptCipherBy = ''
                                $v_EncryptCipher = ''
                                $v_EncryptSwap = ''
                                $av_EncryptBox = ''
                                Local $av_EncryptBox[256][2]
                                For $i_EncryptCountA = 0 To 255
                                        $av_EncryptBox[$i_EncryptCountA][1] = AscW(StringMid($s_EncryptPassword, Mod($i_EncryptCountA, StringLen($s_EncryptPassword)) + 1, 1))
                                        $av_EncryptBox[$i_EncryptCountA][0] = $i_EncryptCountA
                                Next
                                For $i_EncryptCountA = 0 To 255
                                        $i_EncryptCountB = Mod(($i_EncryptCountB + $av_EncryptBox[$i_EncryptCountA][0] + $av_EncryptBox[$i_EncryptCountA][1]), 256)
                                        $v_EncryptSwap = $av_EncryptBox[$i_EncryptCountA][0]
                                        $av_EncryptBox[$i_EncryptCountA][0] = $av_EncryptBox[$i_EncryptCountB][0]
                                        $av_EncryptBox[$i_EncryptCountB][0] = $v_EncryptSwap
                                Next
                                For $i_EncryptCountA = 1 To StringLen($s_EncryptText) Step 2
                                        $i_EncryptCountC = Mod(($i_EncryptCountC + 1), 256)
                                        $i_EncryptCountD = Mod(($i_EncryptCountD + $av_EncryptBox[$i_EncryptCountC][0]), 256)
                                        $i_EncryptCountE = $av_EncryptBox[Mod(($av_EncryptBox[$i_EncryptCountC][0] + $av_EncryptBox[$i_EncryptCountD][0]), 256)][0]
                                        $v_EncryptCipherBy = BitXOR(Dec(StringMid($s_EncryptText, $i_EncryptCountA, 2)), $i_EncryptCountE)
                                        $v_EncryptCipher = $v_EncryptCipher & ChrW($v_EncryptCipherBy)
                                Next
                                $s_EncryptText = $v_EncryptCipher
                                $i_EncryptCountG = ''
                                $i_EncryptCountH = ''
                                $v_EncryptModified = ''
                                For $i_EncryptCountG = 1 To StringLen($s_EncryptText)
                                        If $i_EncryptCountH = StringLen($s_EncryptPassword) Then
                                                $i_EncryptCountH = 1
                                        Else
                                                $i_EncryptCountH += 1
                                        EndIf
                                        $v_EncryptModified &= ChrW(BitXOR(AscW(StringMid($s_EncryptText, $i_EncryptCountG, 1)), AscW(StringMid($s_EncryptPassword, $i_EncryptCountH, 1)), 255))
                                Next
                                $s_EncryptText = $v_EncryptModified
                        Next
                EndIf
                Return $s_EncryptText
        EndIf
EndFunc   ;==>_StringEncryptW

评分

参与人数 1威望 +20 金钱 +140 贡献 +90 收起 理由
kn007 + 20 + 140 + 90 可以了,不过加密后的码子也太长了吧,这字 ...

查看全部评分

 楼主| 发表于 2009-9-7 15:35:10 | 显示全部楼层
#Include <String.au3>

$1 = _StringEncrypt (1,"123","abc")

MsgBox(0, "1",$1)

总是返回空白字符串且 @error = 1
 楼主| 发表于 2009-9-7 15:35:40 | 显示全部楼层
正在调试 _StringEncryptW
 楼主| 发表于 2009-9-7 15:38:02 | 显示全部楼层
可以了,不过这也太长了吧,这字符
发表于 2009-9-7 15:39:34 | 显示全部楼层
9# kn007


呵呵,长是长了点,include 之~
 楼主| 发表于 2009-9-7 15:40:36 | 显示全部楼层
不是,我是说加密后的字符长
如:
123456789012345678901234567890 =

653276D5F27537DDF649C56384D5167C4402917F8F38EEF2BEBDDDD83C888D80A80B929862867C42F6A95BAE241A4F5675A83EA3C632109B76F32C58
 楼主| 发表于 2009-9-7 15:40:56 | 显示全部楼层
要是跟MD5一样是16或32位,就好了
发表于 2009-9-7 15:42:18 | 显示全部楼层
好像只有这个办法,我觉得已经够好了~ 毕竟有时候只需要加密部分内容~ 呵呵
发表于 2009-9-7 16:27:58 | 显示全部楼层
MD5是不可逆的。。。
加密解密的方法如山之多,最简单的“凯撒移位”,还有频率加密法,稍微复杂的维热纳尔方阵。。。
方法数不胜数,想怎么加密就怎么加密。不一定非要拘于现有的加密函数。
发表于 2009-9-7 16:41:19 | 显示全部楼层
MD5是不可逆的。。。
加密解密的方法如山之多,最简单的“凯撒移位”,还有频率加密法,稍微复杂的维热纳尔方阵。。。
方法数不胜数,想怎么加密就怎么加密。不一定非要拘于现有的加密函数。
pusofalse 发表于 2009-9-7 16:27


谢谢大虾指点,认识了几个新名词~
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-11-15 06:54 , Processed in 0.099767 second(s), 31 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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