Chinaunix

标题: 开源一个文件加密工具FileEncryptor [打印本页]

作者: 醉卧水云间    时间: 2008-04-16 13:58
标题: 开源一个文件加密工具FileEncryptor
修改一个粗心的BUG:

        //UCHAR        pad=16-flen%16; //原代码

        UCHAR pad=flen%16;  //修改后
        if(pad) pad=16-pad;   //修改后

附件已更新.



这次绝对是新鲜出炉地, 昨天刚写完, 今天就给大家开了, 当然, 属于计划内的事. 语言为c++.

加密算法都是用现成的, 我的代码只解决方便易用的问题, 这次没写跨平台的, 图快, 偷懒了

前些天做TLS/SSL解密, 了解了一点OPENSSL的东西. 有个朋友需要一个文件加密工具, 问我rar自身的加密如何, 我说不知道, 闭源的, 不一定靠的住, 不如我给你做一个吧, 于是就做了这么个东西. 不过不光是因为他的要求, 其实我自己也需要一个靠的住的加密工具, 于是只好自己动手. 一个加密工具如果是闭源的, 无论他吹的天花乱坠也没有用, 因为可能有隐藏后门的危险, 所以要安全就必须开源, 接受检验.

我这个工具是RSA+AES的, RSA 2048位, AES 256位, 量子计算机出来前应该没有谁能破解的了吧? AES用于文件流数据的加密, RSA用于保护AES的密码. 开始时想纯粹用RSA来加密, 但是RSA的解密速度慢的无法接受, 太慢了, 所以后来折中了, 用AES来加密文件内容. 如果有认为256位AES不安全的请告诉我, 我有点担心这个, RSA2048位应该没什么可担心的.


生成的文件结构很简单, 256字节RSA公钥+256字节AES密码(被公钥加密)+1字节PADDING+文件加密数据.

加密时生成一个随机的256位AES密码用于加密文件数据. 解密时用私钥和公钥配合先解开文件中的AES密码, 然后用这个密码解开文件数据.

软件用法:

0. 在界面上晃几下鼠标, 产生一些随机事件的种子.
1. 生成一个公钥/私钥对, 会保存在当前目录下, 收好你的私钥放在安全的地方.
2. 装进公钥
3. 选择要加密的文件, 点击加密.
4. 装进私钥
5. 选择刚才生成的加密文件, 点击解密

目前私钥没有密码保护, 所以收好. 丢失私钥无法解密加过密的文件.

原码可以用VS2008打开编译, 相信大家都在用着. 编译需要准备好openssl库.

欢迎大家提意见一起完善, 本软件在sf.net上开了帐号: encryptor, 但管理员说我的介绍过于简短还没批.

[ 本帖最后由 醉卧水云间 于 2008-4-17 12:55 编辑 ]

3.JPG (36.83 KB, 下载次数: 44)

界面

界面

FileEncryptor.exe.rar

237.95 KB, 下载次数: 352

执行文件

FileEncryptor.src.rar

54.4 KB, 下载次数: 346

源码


作者: yecheng_110    时间: 2008-04-16 14:00

作者: hellioncu    时间: 2008-04-16 15:31
这个意义不大,因为要用的时候还得先解密。做成一般的虚拟盘方式,这样用起来方便,而且好像这样的开源项目也不少。
作者: 醉卧水云间    时间: 2008-04-16 17:34
标题: 回复 #3 hellioncu 的帖子
用途不一样, 加密后的东西是要存放在某个外部空间上, 比如邮件空间. 你说的那个是在自己硬盘上用的, MS自己还有加密文件夹呢, on the fly, 很方便, 功能和这个不一样. 这个可以加密文件备份到网络上, 需要时取出来用.
作者: tyc611    时间: 2008-04-16 18:06
AES256已经足够安全了
LZ应该加上更改密钥的功能(方便用户),另外,是不是自己作个小图标
还有,私钥如何保存值得研究,不然,对于用户也是一个大负担
作者: 醉卧水云间    时间: 2008-04-16 18:28
标题: 回复 #5 tyc611 的帖子
这个程序我只注意是否够安全, 因为我要用他来加密机密数据, 至于功能方面够我用就行了, 我觉得还挺方便的 , 一个人没必要搞多个密钥, 不好管理啊, 有一个就够用了.

私钥可以加个口令保护起来. 不过我没搞那么麻烦. 自己用软件加个口令就好了.
作者: doctorjxd    时间: 2008-04-16 19:01
不错的软件。支持。

用shell脚本配合openssl、dd等命令也可以实现这个功能,呵呵。不过有些用户用起来可能不习惯。
作者: blankyao    时间: 2008-04-16 23:57
如果打算给用户用的话  就做得再简单些比较好
作者: westgarden    时间: 2008-04-16 23:57
pgp或gnupg都不错。

Screenshot-GNU Privacy Assistant - Keyring Editor.png (29.03 KB, 下载次数: 63)

Screenshot-GNU Privacy Assistant - Keyring Editor.png

作者: evil_knight    时间: 2008-04-17 09:29
原帖由 doctorjxd 于 2008-4-16 19:01 发表
不错的软件。支持。

用shell脚本配合openssl、dd等命令也可以实现这个功能,呵呵。不过有些用户用起来可能不习惯。


这个我感兴趣,愿闻其详!呵呵!
没想明白这两个工具如何配合来加密文件流?
作者: 醉卧水云间    时间: 2008-04-17 10:03
标题: 回复 #8 blankyao 的帖子
是给自己用的, 这东西做成商业软件不赚钱, 所以我是不会再花更多时间了. 自己够用就行了.
作者: 醉卧水云间    时间: 2008-04-17 10:06
标题: 回复 #7 doctorjxd 的帖子
openssl命令就OK了, 不需要脚本, 但是, 命令不好记. 我肯定是记不住的.
作者: doctorjxd    时间: 2008-04-17 11:11
原帖由 evil_knight 于 2008-4-17 09:29 发表


这个我感兴趣,愿闻其详!呵呵!
没想明白这两个工具如何配合来加密文件流?



比如对版主的加密格式的文件进行解密

  1. #提取RSA公钥
  2. dd if=theencodedfile of=tmprsakey bs=256 count=1

  3. #提取并解密AES密钥
  4. dd if=theencodedfile bs=256 count=1 iseek=1 | openssl rsa -pubin tmprsakey > tmpaeskey

  5. ...

复制代码






原帖由 醉卧水云间 于 2008-4-17 10:06 发表
openssl命令就OK了, 不需要脚本, 但是, 命令不好记. 我肯定是记不住的.


是的。 不过要是像你那样定制格式的话就要用其它命令了。
作者: 醉卧水云间    时间: 2008-04-17 11:27
标题: 回复 #13 doctorjxd 的帖子
命令行玩的真溜啊. 这些东西我睡一觉就会忘光, 从来记不住用法. ls都没用熟
所以我的代码一般都带图形的 再不想琢磨命令行了,水太深.
作者: doctorjxd    时间: 2008-04-17 18:06
原帖由 醉卧水云间 于 2008-4-17 11:27 发表
命令行玩的真溜啊. 这些东西我睡一觉就会忘光, 从来记不住用法. ls都没用熟
所以我的代码一般都带图形的 再不想琢磨命令行了,水太深.


平时在FreeBSD下工作,习惯命令行了。但命令行也只有在这样类似的环境下才好用。Windows下还是楼主的程序好。
作者: mxs810    时间: 2010-06-30 18:10
尽管有点老,还是收藏了啊,哈哈
作者: 没本    时间: 2010-06-30 19:00
全球用得最多的还是TrueCrypt。文件映射成盘符或者挂物理加密盘又或者Linux/Mac下mount都支持。最近开源了。
作者: hellioncu    时间: 2010-06-30 22:42
怎么挖坟了呢




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2