ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
300集Office 2010微视频教程 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
楼主: ldy

[分享] 简单而强悍的文件加密工具

  [复制链接]

TA的精华主题

TA的得分主题

发表于 2009-6-7 22:59 | 显示全部楼层
本帖已被收录到知识树中,索引项:保护和加密编程
谢谢LZ分享

TA的精华主题

TA的得分主题

 楼主| 发表于 2009-6-8 02:04 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
原帖由 彭希仁 于 2009-6-7 17:26 发表
可识别字符仅中文就有上万个 ,按常用汉字5000 个计算 用5个汉字做密钥 就是 5000^5  依然是个天文数字,
大约3000000......00后面共17个0 ,如果密钥再长一点......用某个图片的二进制做密钥.....


简单的异或加密破解,破解一位和一百位密码是一样的容易的,本质上不存在差别,只要一位一位的来破解就成了。
,当然这种破解方式只对文本有效,因为文本有规率



用一个最简单的例子来证明 , 彭兄的那篇文章的理论依据不成立。
尽管我没看懂文章中所提到的xor加密,是不是我的这种加密。

一个以加密的文字 它二进制数组就是两个字节,为便于表达用一组括号代表一个字节。
这个加密的文字 是(0)(0),两个字节都是0,这说明原文和密钥是同一个字,有效字符10000多个,你选择那一个呢?
如果这个(0)(0)是密文的头两个字节,逐位破解的的第一步就走不下去。

再用一个简单而实际例子来证明逐位破解的不成立.
简单起见原文和密钥都限定在26个字母大小写+10个数字之间
这个就是加密后的密文 XRZgqV, 而密钥长度不用你去计算了,就是两个字符,而且都是数字
当你把00-99 100个密钥都穷举一便之后,去掉那些有乱码的,还有49个. 根本无法确定那一个是原来的文字,只有加密的人才知道。
当一种破解方法得到多种结果的时候,这能叫破解吗?

Sub 穷举破解()
    Dim b1() As Byte, b2() As Byte, s As String
    For k = 0 To 99   
    b1 = "XRZgqV" ' 这个是密文
    b2 = Format(k, "00")
    lenKey = UBound(b2) + 1
    For i = 0 To UBound(b1)
        J = i Mod lenKey
        b1(i) = b1(i) Xor b2(J)
    Next
    s = b1
    Debug.Print s, k, b2 '有可能的原文 及密钥
Next
End Sub

也许我的理解有偏差,欢迎继续讨论。

TA的精华主题

TA的得分主题

发表于 2009-6-8 11:21 | 显示全部楼层
穷举破解属下下策.

最简单的破解方式,就是猜测里面的一小部分原文,比如常用的单词,常用的一句话,再移位异或就会出密钥.

以上方法绝属猜测,因为本来近来比较忙没有空去玩它.

TA的精华主题

TA的得分主题

发表于 2009-6-8 11:58 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
娜就是说一旦忘记密码
就没有办法再读取数据了,这样有点弊端吧

TA的精华主题

TA的得分主题

发表于 2009-6-8 12:44 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
路过,支持一下.

TA的精华主题

TA的得分主题

 楼主| 发表于 2009-6-8 12:54 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助

回复 33楼 彭希仁 的帖子

穷举破解属下下策. 但是最准确的方法,用穷举法都不能确定的加密,其他方法一样确定不了

TA的精华主题

TA的得分主题

发表于 2009-6-8 13:15 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
学习下,
虽然目前不懂,很多问题理解不了,继续学习.
加密和解密很快就对我有用了, 需好好学习一下.
对excel宏怎样加密,使得普通的破解无效呢?

TA的精华主题

TA的得分主题

发表于 2009-6-8 17:55 | 显示全部楼层
原帖由 ldy 于 2009-6-8 12:54 发表
穷举破解属下下策. 但是最准确的方法,用穷举法都不能确定的加密,其他方法一样确定不了



很早之前我有和LDY版主一样的想法,觉得异或加密就很难破解了,但思来想去发现很多不足.因为网上太多的破解程序见附件.

以下是我很早之前写的字附串加密程序.做了双异或加密,安全性会更高一些,不过在高手面前还是和没有加一样.
Function jami2(xx, yy) As String   '存在一定错误机率的加密
    Dim datx() As Byte, datx1() As Byte
    Dim daty() As Byte
    Dim x As String, y As String, h As Long
    x = xx
    y = yy
    datx = x
    daty = y
    j = 0
    For i = 0 To UBound(datx) - 1 Step 2
        If datx(i) = 255 And datx(i + 1) = 255 Then
            datx(i) = 0: datx(i + 1) = 0
        End If
    Next i
    datx1 = datx
    For i = 0 To UBound(datx)
        If j > UBound(daty) Then j = 0
        datx(i) = datx(i) Xor daty(j)
        j = j + 1
    Next i
    For i = UBound(datx) - 1 To 2 Step -2
        h = datx(i)
        h = Abs(h - datx1(i))
        datx(i - 2) = datx(i - 2) Xor h
    Next i
    For i = 0 To UBound(datx) - 1 Step 2
        If datx(i) = 0 And datx(i + 1) = 0 Then
            datx(i) = 255: datx(i + 1) = 255
        End If
    Next i
    jami2 = datx
End Function

TestXOR.rar

27.57 KB, 下载次数: 220

TA的精华主题

TA的得分主题

发表于 2009-6-8 18:52 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
嗯嗯,不错,学习了

TA的精华主题

TA的得分主题

发表于 2009-6-8 19:33 | 显示全部楼层
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-3-29 22:28 , Processed in 0.048042 second(s), 7 queries , Gzip On, Redis On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

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