AES PKCS5Padding填充方式

玉宇逍遥 2011-08-20 06:12:02
求用C++ 或者 C 或者 VC实现的可以加解密使用PKCS5Padding填充方式的AES源码,在线急求!不胜感激!
...全文
6747 17 打赏 收藏 转发到动态 举报
写回复
用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模式

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧