ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

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

  [复制链接]

TA的精华主题

TA的得分主题

发表于 2009-6-7 09:43 | 显示全部楼层
本帖已被收录到知识树中,索引项:保护和加密编程
好像楼主给的图解密后啥也看不到。。。

TA的精华主题

TA的得分主题

发表于 2009-6-7 10:11 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
不会用呀,请版主讲解用法,操作的文件都是乱字符呀

TA的精华主题

TA的得分主题

发表于 2009-6-7 11:10 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2009-6-7 11:30 | 显示全部楼层
原帖由 彭希仁 于 2009-6-7 08:51 发表
如果只是文本加密,那防破解还不是很强,因为可以单独对一位或二位进行破解,计算可识别字附的个数就OK了。

所以多重加密是非常必要。


可识别字符仅中文就有上万个 ,按常用汉字5000 个计算 用5个汉字做密钥 就是 5000^5  依然是个天文数字,
大约3000000......00后面共17个0 ,如果密钥再长一点......用某个图片的二进制做密钥.....


原帖由 humengqiang 于 2009-6-7 09:04 发表
请问版主的加密文件如何使用?我随便用个文件加密,打开文件就成了乱码,是不是我使用不当?

文件加密过当然都是乱码,只有解密后才能看到, 而密钥只有你自己知道。

原帖由 吃腥的猫 于 2009-6-7 09:43 发表
好像楼主给的图解密后啥也看不到。。。

图是用这个工具加密过的,直接打开当然啥也看不到,这是给喜欢研究破解的朋友测试用的,即使知道我的加密方法,
但不知道密钥(只有我知道),也是无法解开的。


原帖由 gyzzf 于 2009-6-7 10:11 发表
不会用呀,请版主讲解用法,操作的文件都是乱字符呀

很简单,点击文件加密按钮,选择要加密的文件,选择加密后保存的地方,输入密钥(只有自己知道)就OK了。
然后你就会得到一个加密的文件,这个文件谁也看不到其中的内容。原来的文件可以删除。

等你想看这个文件的时候,点击文件解密按钮 选择要解密的文件,选择解密后保存的地方,输入密钥(只有自己知道)就OK了。

TA的精华主题

TA的得分主题

发表于 2009-6-7 14:34 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2009-6-7 14:43 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2009-6-7 15:13 | 显示全部楼层
很实用,要是能改进一下就更好了!改进建议如下:
  一般的电脑都装有Excel(或者将其宏做成Dll文件),将加密对话框加入右键菜单,不要打开Excel,直接用右键加密文件,不需另存其他文件名,直接替换原文件,不解密打开看不到内容;
  解密也一样,不要打开Excel,直接用右键解密文件,不需另存其他文件名,直接替换原文件,然后可正常打开。 


这个建议挺好,但实施起来有点麻烦,没做过类似的东西,只知道要从注册表下手。
等有空时尝试一下。

                                                       ------ldy  09-06-07

TA的精华主题

TA的得分主题

发表于 2009-6-7 15:18 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
学会了,确实不错,谢谢楼主分享

TA的精华主题

TA的得分主题

发表于 2009-6-7 16:06 | 显示全部楼层
使用过程出现如下问题,还请Idy斑斑帮忙分析一下。
谢谢。
error.JPG

TA的精华主题

TA的得分主题

 楼主| 发表于 2009-6-7 16:45 | 显示全部楼层
原帖由 MSLEE 于 2009-6-7 16:06 发表
使用过程出现如下问题,还请Idy斑斑帮忙分析一下。
谢谢。

简体版文件繁体版打开的问题,源代码如下,你建立个模块复制进去好了

'原创ExcelHome LDY 26258103@163.com  2009-6-6
Sub xor加密()
    Dim keyStr As String, b1() As Byte, b2() As Byte, lenKey As Long, J As Long, i As Long
    Dim pth As String, pth2 As String, fileTp As String
    pth = Application.GetOpenFilename("", , , "选测要加密的文件")
    If pth = "False" Then MsgBox "没有选择文件。": Exit Sub
    arr = Split(pth, ".")
    fileTp = arr(UBound(arr))
    pth2 = Application.GetSaveAsFilename("", fileTp & " 文件 ,*." & fileTp, , "保存加密后的文件名")
    If pth2 = "False" Then MsgBox "没有保存文件。": Exit Sub
    keyStr = InputBox("请输入密钥", "请输入任意字符,但要易于记忆,比如一句唐诗", "床前明月光")
    If Len(keyStr) = 0 Then MsgBox "密钥长度为0,不能加解密": Exit Sub
    ' 解密和加密的程序都一样,只是对话框的标题不同,下面的代码一模一样
    f# = FreeFile
    Open pth For Binary As f
    If LOF(f) > 3 * 1024 * 1024& Then  '文件大于3M, 2M内存双核1.5cpu 6M文件约1秒
        If MsgBox("文件大于3M,估算用时约 " & CLng(LOF(f) \ 6 * 1024 * 1024&) & _
                  "秒,继续吗? ", 1, "较大文件确认") = vbCancel Then Close f#: Exit Sub
    End If
    t = Timer
    ReDim b1(LOF(f) - 1)
    Get f#, , b1
    Close f#

    '''''''''''''''''''''''''''''''''
    '真正的加密解密语句就这么简单,但确是非常强悍的
    '如果密钥仅有两个字符,将会有42亿种可能,如果不知道密钥,是无法解密的.
    '密钥的复杂度计算公式为 256的(密钥长度*2)的次方= 256^(密钥长度*2)
    b2 = keyStr
    lenKey = UBound(b2) + 1
    For i = 60 To UBound(b1)
        J = i Mod lenKey
        b1(i) = b1(i) Xor b2(J)
    Next
    '''''''''''''''''''''''''''''''''
    f# = FreeFile
    Open pth2 For Binary As f
    Put f#, , b1
    Close f#
    MsgBox Timer - t & " 秒 OK " & pth2
End Sub
Sub xor解密()
    Dim keyStr As String, b1() As Byte, b2() As Byte, lenKey As Long, J As Long, i As Long
    Dim pth As String, pth2 As String, fileTp As String
    pth = Application.GetOpenFilename("", , , "选测要解密的文件")
    If pth = "False" Then MsgBox "没有选择文件。": Exit Sub
    arr = Split(pth, ".")
    fileTp = arr(UBound(arr))
    pth2 = Application.GetSaveAsFilename("", fileTp & " 文件 ,*." & fileTp, , "保存解密后的文件名")
    If pth2 = "False" Then MsgBox "没有保存文件。": Exit Sub
     keyStr = InputBox("请输入密钥", "加密时的密钥,如果输错了相当于又加密一次", "床前明月光")
    If Len(keyStr) = 0 Then MsgBox "密钥长度为0,不能加解密": Exit Sub
   
    ' 加密和解密的程序都一样,只是对话框的标题不同,下面的代码一模一样
    f# = FreeFile
    Open pth For Binary As f
    If LOF(f) > 3 * 1024 * 1024& Then '文件大于3M
    If MsgBox("文件大于3M,估算用时约 " & CLng(LOF(f) \ 6 * 1024 * 1024&) & _
    "秒,继续吗? ", 1, "较大文件确认") = vbCancel Then Close f#: Exit Sub
    End If
    t = Timer
    ReDim b1(LOF(f) - 1)
    Get f#, , b1
    Close f#

    '''''''''''''''''''''''''''''''''
    '真正的加密解密语句就这么简单
    b2 = keyStr
    lenKey = UBound(b2) + 1
    For i = 0 To UBound(b1)
        J = i Mod lenKey
        b1(i) = b1(i) Xor b2(J)
    Next
    '''''''''''''''''''''''''''''''''
    f# = FreeFile
    Open pth2 For Binary As f
    Put f#, , b1
    Close f#
MsgBox Timer - t & " 秒 OK " & pth2
End Sub
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-12-5 02:57 , Processed in 0.045717 second(s), 8 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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