硬汉嵌入式论坛

 找回密码
 立即注册
查看: 4244|回复: 19
收起左侧

求一个AES256-CBC加密文件的小工具

[复制链接]

76

主题

237

回帖

465

积分

高级会员

积分
465
发表于 2020-6-9 13:32:00 | 显示全部楼层 |阅读模式
论坛里有没有能用AES256-CBC模式加密文件的小工具啊,网上只有AES-ECB模式的,我记得之前有人发过一个,找不到链接了....
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115667
QQ
发表于 2020-6-9 14:24:42 | 显示全部楼层
开源分享一个AES计算软件
http://www.armbbs.cn/forum.php?m ... 9633&fromuid=58
(出处: 硬汉嵌入式论坛)
回复

使用道具 举报

42

主题

1016

回帖

1147

积分

至尊会员

积分
1147
发表于 2020-6-9 15:41:13 | 显示全部楼层
一直想用QT的QML写一个开源小工具,主要目的是想向大家展示一下用QML制作精美界面的效果。无奈自己实在太懒,而且也不知道做什么小工具。看来有机会可以做一个AES计算的小工具
回复

使用道具 举报

76

主题

237

回帖

465

积分

高级会员

积分
465
 楼主| 发表于 2020-6-9 16:24:56 | 显示全部楼层
eric2013 发表于 2020-6-9 14:24
开源分享一个AES计算软件
http://www.armbbs.cn/forum.php?mod=viewthread&tid=89633&fromuid=58
(出处:  ...

多谢~
回复

使用道具 举报

76

主题

237

回帖

465

积分

高级会员

积分
465
 楼主| 发表于 2020-6-9 16:26:27 | 显示全部楼层
ghslfgkkl88 发表于 2020-6-9 15:41
一直想用QT的QML写一个开源小工具,主要目的是想向大家展示一下用QML制作精美界面的效果。无奈自己实在太懒 ...

大佬,做一个吧,最好是支持任意文件加密解密的,支持AES256-CBC的。等你好消息。
回复

使用道具 举报

76

主题

237

回帖

465

积分

高级会员

积分
465
 楼主| 发表于 2020-6-9 16:50:17 | 显示全部楼层
唉,这个貌似是AES128的,白高兴了...
回复

使用道具 举报

42

主题

1016

回帖

1147

积分

至尊会员

积分
1147
发表于 2020-6-9 16:52:55 | 显示全部楼层
没看清,原来你是要加密文件。如果只是想用AES256加密文件的话,看看7Z如何,就是不确定7Z的AES-256是什么模式的。
回复

使用道具 举报

76

主题

237

回帖

465

积分

高级会员

积分
465
 楼主| 发表于 2020-6-10 08:33:25 | 显示全部楼层
ghslfgkkl88 发表于 2020-6-9 16:52
没看清,原来你是要加密文件。如果只是想用AES256加密文件的话,看看7Z如何,就是不确定7Z的AES-256是什么 ...

就是基于AES256-CBC模式,填写密钥和向量,选择需要加密的任意文件,按加密键后输出加密后的文件,主要是用来加密bin文件用的。
回复

使用道具 举报

1

主题

14

回帖

17

积分

新手上路

积分
17
发表于 2020-6-10 11:31:09 | 显示全部楼层
本帖最后由 lulua 于 2020-6-10 11:43 编辑
kokoromi 发表于 2020-6-10 08:33
就是基于AES256-CBC模式,填写密钥和向量,选择需要加密的任意文件,按加密键后输出加密后的文件,主要是 ...

我写了一个AES128的CBC加密你着急用吗?AES256的写起来也很简单
回复

使用道具 举报

1

主题

14

回帖

17

积分

新手上路

积分
17
发表于 2020-6-10 11:40:31 | 显示全部楼层
kokoromi 发表于 2020-6-10 08:33
就是基于AES256-CBC模式,填写密钥和向量,选择需要加密的任意文件,按加密键后输出加密后的文件,主要是 ...

我这里用C优化实现了AES128 ECB和CBC模式的算法,有源码,改成AES256也算比较简单,个人认为AES128足以满足商业需求,如果你不做政务相关的加密
回复

使用道具 举报

42

主题

1016

回帖

1147

积分

至尊会员

积分
1147
发表于 2020-6-10 11:52:55 | 显示全部楼层
kokoromi 发表于 2020-6-10 08:33
就是基于AES256-CBC模式,填写密钥和向量,选择需要加密的任意文件,按加密键后输出加密后的文件,主要是 ...

有些问题我没想明白:
1. AES好像是按16字节的倍数加密的,如果你的bin文件最后不足16字节,则需要补足。怎么判断最后哪些数据是补足的,哪些是正常的数据,这个需要定一个规则,所以没法通用吧?
2. 对任意文件加密,假如一个pdf文档,加密后它就不是一个pdf文档了,不能直接打开。莫非自定义一个新的文件格式和后缀,把加密后的新文件按这种自定义方式存放?
回复

使用道具 举报

1

主题

14

回帖

17

积分

新手上路

积分
17
发表于 2020-6-10 12:15:00 | 显示全部楼层
ghslfgkkl88 发表于 2020-6-10 11:52
有些问题我没想明白:
1. AES好像是按16字节的倍数加密的,如果你的bin文件最后不足16字节,则需要补足 ...

对的,我用的PKCS7填充,openssl默认的填充方式
回复

使用道具 举报

1

主题

14

回帖

17

积分

新手上路

积分
17
发表于 2020-6-10 12:15:37 | 显示全部楼层
ghslfgkkl88 发表于 2020-6-10 11:52
有些问题我没想明白:
1. AES好像是按16字节的倍数加密的,如果你的bin文件最后不足16字节,则需要补足 ...

可以通用的,有pkcs7和pkcs5,还有zeropadding,pkcs7最常用
回复

使用道具 举报

1

主题

14

回帖

17

积分

新手上路

积分
17
发表于 2020-6-10 12:18:27 | 显示全部楼层
ghslfgkkl88 发表于 2020-6-10 11:52
有些问题我没想明白:
1. AES好像是按16字节的倍数加密的,如果你的bin文件最后不足16字节,则需要补足 ...

这些加密方式都是有标准的,如果你想通用就按照标准来,如果你只想自己在公司使用,可以创立一套自己的可行的标准,未尝不可
回复

使用道具 举报

76

主题

237

回帖

465

积分

高级会员

积分
465
 楼主| 发表于 2020-6-10 12:23:48 | 显示全部楼层
ghslfgkkl88 发表于 2020-6-10 11:52
有些问题我没想明白:
1. AES好像是按16字节的倍数加密的,如果你的bin文件最后不足16字节,则需要补足 ...

1、不足16字节的直接在末尾添加0xFF即可,保证解密的填充字节为0xFF就可以,或者按照AES专用的填充方式PKCS5或PKCS7或0都行;
2、我主要用于加密bin文件,能不能打开无所谓的,只要把文件内容加密就可以了。文件名和扩展名不变(不需要加密)。
回复

使用道具 举报

76

主题

237

回帖

465

积分

高级会员

积分
465
 楼主| 发表于 2020-6-10 12:29:03 | 显示全部楼层
lulua 发表于 2020-6-10 11:40
我这里用C优化实现了AES128 ECB和CBC模式的算法,有源码,改成AES256也算比较简单,个人认为AES128足以满足 ...

主要是不懂上位机,要不就自己弄了
最好是256的
那个密钥和向量最好是可以直接输入字符串,字符串在内部按照GBK或GB2312编码解析,不要UTF-8的。
回复

使用道具 举报

1

主题

14

回帖

17

积分

新手上路

积分
17
发表于 2020-6-10 15:12:08 | 显示全部楼层
kokoromi 发表于 2020-6-10 12:29
主要是不懂上位机,要不就自己弄了
最好是256的
那个密钥和向量最好是可以直接输入字符串,字符串 ...

我弄的密钥是二进制数组,关于字符编码,自己写个函数把字符转成套二进制就行
回复

使用道具 举报

76

主题

237

回帖

465

积分

高级会员

积分
465
 楼主| 发表于 2020-6-10 15:57:03 | 显示全部楼层
lulua 发表于 2020-6-10 15:12
我弄的密钥是二进制数组,关于字符编码,自己写个函数把字符转成套二进制就行

二进制数组?那怎么输入密钥和向量...
有256的话发一个瞻仰瞻仰呗
回复

使用道具 举报

1

主题

14

回帖

17

积分

新手上路

积分
17
发表于 2020-6-10 16:58:01 | 显示全部楼层
kokoromi 发表于 2020-6-10 15:57
二进制数组?那怎么输入密钥和向量...
有256的话发一个瞻仰瞻仰呗

没有256,只弄了128,256效率只有128的70%,不划算;而且128实现了改256不难呀,原理相通吧.openssl源码GitHub 上也有,自己看源码注释,动手改成适合自己的就行了.
https://github.com/openssl/openssl/blob/master/crypto/aes/aes_core.c
https://github.com/openssl/openssl/blob/master/crypto/modes/cbc128.c

再不行看文档自己写一个呗.
写完一次,以后就可以一直用,永远不愁了,何乐而不为呢


回复

使用道具 举报

42

主题

1016

回帖

1147

积分

至尊会员

积分
1147
发表于 2020-6-10 18:05:35 | 显示全部楼层
kokoromi 发表于 2020-6-10 12:23
1、不足16字节的直接在末尾添加0xFF即可,保证解密的填充字节为0xFF就可以,或者按照AES专用的填充方式PK ...

原来还有PKCS5和PKCS7这种填充方法,找个机会试一下。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2025-5-11 01:29 , Processed in 0.350269 second(s), 24 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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