sm4加密解密的问题

Nosoft12345 2016-01-15 02:35:16
遇到一个sm4加密解密的问题。

我用的是在网上找的SM4.h和SM4.cpp的两个文件,应该是开源的。

我看很多博客都是这两个文件。
对这俩文件的正确与否,暂不作质疑。
=================================================

sm4_context sm4_text;
memset(&sm4_text,0,sizeof(sm4_context));
sm4_text.mode = SM4_ENCRYPT;


BYTE SessionKey[0x10] = {0};
///密码:16位

sm4_setkey_enc(&sm4_text,SessionKey);


unsigned char *CipherText= new unsigned char[fDataLen +4096];//这里,SM4加密输出的数据长度给多少???

memset(CipherText,0,fDataLen +4096);

sm4_crypt_ecb(&sm4_text,SM4_ENCRYPT,fDataLen,pPlainText,(BYTE*)CipherText);

outl = strlen((char*)CipherText);//这里这样取加密后输出数据的长度对吗?

以上两个问号之处,是比较困扰的。

第一个,加密后,保存密文的长度?
第二个,加密后,密文的实际长度?

个人觉得这个SM4算法,不怎么好用。

另外一个问题就是,如果密码设置的很特殊,就有可能加密解密不成功。

不知道有人遇到过这样的问题么

=======================
我遇到的问题是,不同的原文SM4加密,就解密不了。

...全文
1461 3 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
weixin_46092997 2020-01-03
  • 打赏
  • 举报
回复

密码0x01234567, 0x89abcdef, 0xfedcba98, 0x76543210,当使用图上数字加密时,加密后增加一字节。图上数字不管改前8字节还是改后8字节都正常,奇怪??
用户 昵称 2016-01-20
  • 打赏
  • 举报
回复
密钥很特殊,如何特殊了?出现这问题肯定是不对的。 sm4以16字节为单位 处理数据都是16进制数据,你的字符串是不灵的。
Nosoft12345 2016-01-15
  • 打赏
  • 举报
回复
一样的原文,不同的,但很特殊的密码,就有可能解密不了

19,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 图形处理/算法
社区管理员
  • 图形处理/算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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