社区
C语言
帖子详情
AES PKCS5Padding填充方式
玉宇逍遥
2011-08-20 06:12:02
求用C++ 或者 C 或者 VC实现的可以加解密使用PKCS5Padding填充方式的AES源码,在线急求!不胜感激!
...全文
6747
17
打赏
收藏
AES PKCS5Padding填充方式
求用C++ 或者 C 或者 VC实现的可以加解密使用PKCS5Padding填充方式的AES源码,在线急求!不胜感激!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
17 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
周凯_csdn
2011-08-20
打赏
举报
回复
double * p = (double *)malloc(sizeof(1));
到底分配了几个字节,1个还是8个;个人认为是8个。。。。
玉宇逍遥
2011-08-20
打赏
举报
回复
[Quote=引用 15 楼 jackyjkchen 的回复:]
抱歉,确实没什么时间,这个也就是入门的时候难一点,楼主加油……
[/Quote]
呵呵 还是很感谢你给的思路和想法。我在研究研究吧。谢谢了!
jackyjkchen
2011-08-20
打赏
举报
回复
抱歉,确实没什么时间,这个也就是入门的时候难一点,楼主加油……
玉宇逍遥
2011-08-20
打赏
举报
回复
[Quote=引用 13 楼 jackyjkchen 的回复:]
openssl的实例很多的,另外文档看了没有(这个只有英文的)
[/Quote]
看了些Openssl的英文文档,看的很吃力。里面的太杂了。你看你能先帮忙解决一下吗?我现在项目很急,主要是手头上还没什么有更多的资料很是着急
jackyjkchen
2011-08-20
打赏
举报
回复
openssl的实例很多的,另外文档看了没有(这个只有英文的)
玉宇逍遥
2011-08-20
打赏
举报
回复
[Quote=引用 11 楼 jackyjkchen 的回复:]
假如数据长度14,你就填充到16,;假如是29,你就填充到32。比源数据大的最小整倍数。
楼主是不是还不熟悉openssl的api,这个别人帮不了你,先找一些openssl的实例看看吧
[/Quote]
我是不太了解,也没找到什么资料说明Openssl的API的。找到的《Openssl编程》但是说明的很模糊,不是太详细。
我看那个AES_KEY是一个结构体,但是我没找到该怎么输出char[]类型的方法。
jackyjkchen
2011-08-20
打赏
举报
回复
假如数据长度14,你就填充到16,;假如是29,你就填充到32。比源数据大的最小整倍数。
楼主是不是还不熟悉openssl的api,这个别人帮不了你,先找一些openssl的实例看看吧
玉宇逍遥
2011-08-20
打赏
举报
回复
[Quote=引用 9 楼 jackyjkchen 的回复:]
难度不大,我手头没有现成的代码,你现在的关键不是去找aes的代码,而是找pkcs的函数(先在openssl里找)
你的待加密数据长度应该是可以知道的吧,如果这个长度不是16字节的整倍数(aes分组长度),你就用pkcs的函数把它填充到16字节整倍数长度就可以了
java的那套api我没用过,不过我理解的填充应该就是这样的
[/Quote]
谢谢你给的思路
我去看一看,不过填充的长度应该是16字节的多少倍呢?还有我要是以char[16]输出AES_KEY的话应该怎么做呢?我看一下AES_KEY的结构,但是找不到输出的方式。你有什么办法吗?
小弟刚接触这一快,麻烦你了。
jackyjkchen
2011-08-20
打赏
举报
回复
难度不大,我手头没有现成的代码,你现在的关键不是去找aes的代码,而是找pkcs的函数(先在openssl里找)
你的待加密数据长度应该是可以知道的吧,如果这个长度不是16字节的整倍数(aes分组长度),你就用pkcs的函数把它填充到16字节整倍数长度就可以了
java的那套api我没用过,不过我理解的填充应该就是这样的
玉宇逍遥
2011-08-20
打赏
举报
回复
[Quote=引用 7 楼 jackyjkchen 的回复:]
引用 6 楼 woshiqinxue 的回复:
引用 3 楼 jackyjkchen 的回复:
想省事直接用Windows CryptoAPI,各种密码学库也很多。
AES作为对称加密算法一般不填充吧,有必要么?
就算要填充,对称算法和填充一般不会搅到一块,你要找“用pksc5填充的aes源码”,一辈子也找不到,aes源码都是基础算法。
公钥算法一般用pkcs填充的……
[/Quote]
您能说的详细点吗?或者帮忙给段代码可以吗?我没做过这个,实在是没什么头绪。项目也是现学现用现做的。RSA的填充方式有直接的API但是AES我就实在不知道怎么办了。
万分感谢!
jackyjkchen
2011-08-20
打赏
举报
回复
[Quote=引用 6 楼 woshiqinxue 的回复:]
引用 3 楼 jackyjkchen 的回复:
想省事直接用Windows CryptoAPI,各种密码学库也很多。
AES作为对称加密算法一般不填充吧,有必要么?
就算要填充,对称算法和填充一般不会搅到一块,你要找“用pksc5填充的aes源码”,一辈子也找不到,aes源码都是基础算法。
公钥算法一般用pkcs填充的比较多
主要是我要做的项目要和JAVA通信,JA……
[/Quote]
如果是openssl,记得本身有单独的pkcs的api(为了rsa,rsa的标准填充需要pkcs)。
ecb模式也就是最后一个分组,数据长度达不到分组长度的时候要填充,这时候用pkcs的函数手动填充一下再加密就可以了。
玉宇逍遥
2011-08-20
打赏
举报
回复
[Quote=引用 3 楼 jackyjkchen 的回复:]
想省事直接用Windows CryptoAPI,各种密码学库也很多。
AES作为对称加密算法一般不填充吧,有必要么?
就算要填充,对称算法和填充一般不会搅到一块,你要找“用pksc5填充的aes源码”,一辈子也找不到,aes源码都是基础算法。
公钥算法一般用pkcs填充的比较多
[/Quote]
主要是我要做的项目要和JAVA通信,JAVA采用的默认就是PKCS5Padding这个的填充方式。
而服务器的源代码不能修改所以我只能在C++的代码上想办法。整个项目都用的Openssl开发的,我才想解决这AES的问题。如果不用Openssl的话你有什么能和JAVA的JCE的AES编码后一样的方法吗?
至善者善之敌
2011-08-20
打赏
举报
回复
chen 的专业,你问他吧,哈哈
jackyjkchen
2011-08-20
打赏
举报
回复
pkcs5在公钥算法中填充过后的效果就是同一个密钥同一个数据,每次加密结果不同
对称算法要实现这种效果不需要使用pkcs,不用ecb模式就可以了,高人们的推荐是ctr
jackyjkchen
2011-08-20
打赏
举报
回复
想省事直接用Windows CryptoAPI,各种密码学库也很多。
AES作为对称加密算法一般不填充吧,有必要么?
就算要填充,对称算法和填充一般不会搅到一块,你要找“用pksc5填充的aes源码”,一辈子也找不到,aes源码都是基础算法。
公钥算法一般用pkcs填充的比较多
l369294289
2011-08-20
打赏
举报
回复
不懂,帮顶!!!!!免得沉了。
玉宇逍遥
2011-08-20
打赏
举报
回复
采用ECB模式
c++
AES
兼容 JAVA
AES
CBC
PKCS5
Padding
C#
公司有用C#写的
AES
代码 又有用JAVA
AES
CBC
PKCS5
Padding
加密的 但对于由JAVA
AES
CBC
PKCS5
Padding
加密的数据C++解密的资料极为稀缺 故本人找到了一些资源 同时改写了一些
填充
方式
使得与JAVA C#兼容 VS2010 测试通过 JAVA的在这里http: blog csdn net wfung kwok article details 7766427 需要大家注意的是C++加密的秘钥和IV 向量是我自己设置的 大家可以自己修改 以兼容JAVA C# ">公司有用C#写的
AES
代码 又有用JAVA
AES
CBC
PKCS5
Padding
加密的 但对于由JAVA
AES
CBC
PKCS5
Padding
加密的数据C++解密的资料极为稀缺 故本人找到了一些资源 同时改写了一些
填充
方式
使得与JAVA C#兼容 VS2010 测试通过 JAVA的在这里h [更多]
AES
-128-ECB-
PKCS5
Padding
.zip
此次
AES
文件只实现
AES
128-ECB加密
方式
,实现以
PKCS5
Padding
填充
方式
,也可通用PKCS7
Padding
填充
方式
,也可自行修改实现NO
Padding
填充
。以C语言
方式
实现加密方法,国际标准
方式
实现,可自行网上搜索在线验证
方式
验证加密方法,输出HEX数据。
c++实战区块链核心密码学-基于openssl公开课
课程学习目标了解DES算法原理 VS2019创建C++项目,并导入openssl库学会OpenSSL DES算法加解密接口加密文件并做PKCS7
Padding
数据
填充
解密数据并做数据
填充
解析课程特点 面向工程应用 &...
AES
/ECB/
PKCS5
Padding
C++实现
AES
/ECB/
PKCS5
Padding
C++实现
AES
128 CBC PKCS7
Padding
,自动
填充
,已经成功与平台握手,通过验证
uint16_t
aes
_encrypt(uint8_t *iv,uint8_t *Key,uint8_t *input,uint16_t length)/*加密时,明文首先与IV异或,然后将结果进行块加密,得到的输出就是密文, *同时本次的输出密文作为下一个块加密的IV*/ void
aes
_decrypt(uint8_t *iv,uint8_t *Key,uint8_t *input,uint16_t length)/*解密时,先将密文的第一个块进行块解密,然后将结果与IV异或, *就能得到明文,同时,本次解密的输入密文作为下一个块解密的IV*/ uint16_t PKCS7
Padding
(uint8_t *p, uint16_t len)/*加密明文如果不是16byte整倍数,则根据PKCS7标准
填充
至16byte整倍数*/
C语言
69,371
社区成员
243,080
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章