绿色风's Blog
专注AutoIT(Au3)
  • 首页
  • 流●年
  • 笔●记
    • 学习随记
    • 源码示例
  • 脚●本
    • UDF(收集)
    • 工作室UDF
    • 工具●教程
    • 教程之GDI
  • 作●品
  • 下●载
  • 情怀ExcelTip
4月112015

Au3差异加密

作者:绿色风   发布:2015-4-11 14:31 Saturday   分类:   阅读:6391次   评论:2条  

原创作者:tvzml  

一直以来想给密码加密,现成的加密代码为一些简单的密码,如 就一个 1 ,加密以后的密文也很简单,很容易被猜出来,苦思冥想之后,巧妙的使用了一种随机差异加密,可以使用加密后的结果千变万化,而且加密以后的长度也是比较简洁,可以达到事半功倍的效果,你花1倍功力打乱规律,破解者可能要花10倍的功力是分析规律,想通过密文反推密码难度很大,以下代码是经过1次打乱的代码:

第1次运行

1.jpg

2.jpg

第2次运行

3.jpg

4.jpg

code----------------------------

#include <String.au3>
#include <Array.au3>
Local $String = "123 ABC 中国"
Local $Hex16 = __R16Encode($String)
MsgBox(4096, "R16加密", "加密前: " & $String & @LF & "加密后: " & $Hex16)
Local $String = __R16Decode($Hex16)
MsgBox(4096, "R16加密", "解密前: " & $Hex16 & @LF & "解密后: " & $String)
Exit
Func __R16Encode($STR = '')
    Dim $Y16[16] = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F']
    Dim $R16[16] = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F']
    Dim $R16_D, $R16STR, $Hex, $ii, $STR_Tmp_Dat, $STR_Tmp
    For $i = 0 To UBound($R16) - 1
        $R16_D = Random($i, UBound($R16) - 1, 1)
        _ArraySwap($R16[$i], $R16[$R16_D])
    Next
    $R16STR = StringReplace(_ArrayToString($R16), '|', '')
    $Hex = _StringToHex($STR)
    Dim $Str_Len = StringLen($Hex)
    For $i = 1 To $Str_Len
        Dim $editstr = StringMid($Hex, $i, 1)
        For $ii = 0 To 15
            $STR_Tmp = StringReplace($editstr, $Y16[$ii], $R16[$ii])
            If @extended = 1 Then ExitLoop
        Next
        $STR_Tmp_Dat &= $STR_Tmp
    Next
    If $STR_Tmp_Dat <> "" Then $STR_Tmp_Dat = StringRight($R16STR, 8) & $STR_Tmp_Dat & StringLeft($R16STR, 8)
    Return $STR_Tmp_Dat
EndFunc   ;==>__R16Encode

Func __R16Decode($STR = '')
    If StringLen($STR) < 17 Then Return ""
    Dim $Y16[16] = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F']
    Dim $R16_CODE_L = StringRight($STR, 8)
    Dim $R16_CODE_R = StringLeft($STR, 8)
    Dim $R16_CODE = $R16_CODE_L & $R16_CODE_R
    Dim $R16 = StringSplit($R16_CODE, '')
    _ArrayDelete($R16, 0)
    Dim $Hex, $ii, $STR_Tmp_Dat, $STR_Tmp
    $Hex = StringTrimLeft($STR, 8)
    $Hex = StringTrimRight($Hex, 8)
    Dim $Str_Len = StringLen($Hex)
    For $i = 1 To $Str_Len
        Dim $editstr = StringMid($Hex, $i, 1)
        For $ii = 0 To 15
            $STR_Tmp = StringReplace($editstr, $R16[$ii], $Y16[$ii])
            If @extended = 1 Then ExitLoop
        Next
        $STR_Tmp_Dat &= $STR_Tmp
    Next
    $Hex = _HexToString($STR_Tmp_Dat)
    Return $Hex
EndFunc   ;==>__R16Decode```
    





本文固定链接: http://www.jianyiit.com/post-85.html

blogger
该日志由 绿色风 于2015-4-11 14:31 Saturday发表在 分类下。
版权所有:《绿色风's Blog》 → 《Au3差异加密》;
除特别标注,本博客很多文章均为原创. 互联分享,尊重版权,转载请以链接形式标明本文地址;
本文标签:

扫描二维码,在手机上阅读
上一篇::AU3编写串口调试程序
下一篇:吐嘈,这500万的红包就是个坑

热门文章

相关文章

  • Autoit v3 断点 调试 输出 错误 测试
  • base64图片数据解密转图片
  • 全GDI动画_齿轮进度条_百分比[带源码]
  • 中文字符串转拼音字符串UDF
  • 解压WinHttp返回gzip格式的数据流
评论列表 ↓
呦,果断人中龙凤! 蝶舞      2017-05-23 17:58 @回复
大人,您好!
第30行出错:_ArraySwap($R16[$i], $R16[$R16_D])这一行,我查了帮助,多加了一个参数,但每次加密后的结果都是一样的,请楼主看一下呢?谢谢!
皓月      2018-05-10 16:22 @回复>
@蝶舞:第15行_ArraySwap($R16[$i], $R16[$R16_D])改为_ArraySwap($R16,$R16[$i], $R16[$R16_D])
取消回复

发表评论

亲,头像对么?

11 + 11 =

提交中,请稍候……


木有头像就木JJ啦!还木有头像吗?点这里申请属于你的个性Gravatar头像吧!


    站点统计
    • 运行时间: 20254 天
    • 日志总数: 365 篇
    • 评论数量: 7237 条
    • 微语数量: 6 条
    • 附件总量: 388 件
  • 逝出的青春

  • 打赏"绿色风"



      扫码关注本站公众号 可搜本站内容

  • Autoit V3 脚本交流群

      常驻群1:905774875
      常驻群2:40672266


  • 链接

    • AU3中文论坛
    • Excel资料库
    • 完美者博客
    • 顺网小哥'S Blog
    • 猛牛哥的博客
    • 网吧系统下载
  • 分类

    • 流●年(66)
    • 笔●记(0)
    • 脚●本(0)
    • 作品(21)
    • 学习随记(51)
    • 源码示例(68)
    • UDF(收集)(26)
    • 工作室UDF(30)
    • 工具●教程(62)
    • 教程之GDI(24)
Copyright © 2013 绿色风's Blog. Powered by emlog. Theme by 射雕天龙. 鄂ICP备2021011689号-1 鄂公网安备42102302000078号 sitemap