sm4加密解密的问题
遇到一个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加密,就解密不了。