DES的des_ncbc_encrypt()函数密文返回长度有问题
以下是部分代码
string DES_Encrypt(const string cleartext, const string key)
{
string strCipherText;
DES_cblock keyEncrypt, ivec;
memset(keyEncrypt, 0, 8);
if (key.length() <= 8)
memcpy(keyEncrypt, key.c_str(), key.length());
else
memcpy(keyEncrypt, key.c_str(), 8);
DES_key_schedule keySchedule;
DES_set_odd_parity(&keyEncrypt);
DES_set_key_checked(&keyEncrypt, &keySchedule);
memcpy(ivec, cbc_iv, sizeof(cbc_iv));
int iLength = cleartext.length() % 8 ? (cleartext.length() / 8 + 1) * 8 : cleartext.length();
unsigned char* tmp = new unsigned char[iLength +16];
memset(tmp, 0, iLength);
DES_ncbc_encrypt((const unsigned char*)cleartext.c_str(), tmp, cleartext.length()+1, &keySchedule, &ivec, DES_ENCRYPT);
strCipherText = (char*)tmp;
printf("strciper_length :%d\n",(int)(strCipherText.length()));
delete [] tmp;
return strCipherText;
} 其中key是明文密码,类似于xiaoddd这个密码就不行,而xianoin就返回长度正常(96)的密文
相关推荐
OPENSSL库的使用-DES篇 - duanxingheng的专栏 - CSDN博客.pdf
OPENSSL库的使用-DES篇 - duanxingheng的专栏 - CSDN博客.pdf
3DES-CBC加密与SHA-256哈希:原理、C语言实现与嵌入式实战
在数据安全领域,加密算法和哈希函数是保障信息机密性与完整性的核心技术。加密算法通过对数据进行变换,确保只有授权方可以访问原始内容,其核心在于密钥管理和加密模式。哈希函数则将任意长度数据映射为固定长度的摘要,具备单向性和抗碰撞性,常用于验证数据完整性。从工程实践角度看,分组密码的工作模式(如CBC)解决了ECB模式的安全缺陷,通过引入初始化向量(IV)和链式结构,为加密注入了必要的随机性。在嵌入式系统和传统工业场景中,**3DES算法**因其与DES硬件的兼容性和成熟度,仍在特定合规领域发挥作用。而**SHA
逆向工程中的编码与加密算法识别与实战分析
在计算机安全与软件分析领域,编码与加密是数据处理的两大基础技术。编码作为信息的表现形式,如Base64、十六进制等,旨在实现数据的标准化传输与存储;而加密作为信息的保护手段,如AES、RSA等算法,通过密钥机制确保数据的机密性。理解其原理对软件逆向、漏洞挖掘及安全审计至关重要。在逆向工程中,快速识别Base64、AES等常见算法特征,并分析其模式与密钥,是解密通信协议、分析恶意代码的核心技能。本文聚焦于逆向实战,系统讲解如何通过特征识别、动态调试及工具链应用,高效处理编码转换与加密算法分析,帮助开发者掌握从
29Linux基础命令详解——用户管理.docx
29Linux基础命令详解——用户管理
科技服务机构如何通过数据分析增强服务竞争力?.docx
科易网基于40亿+科创知识图谱数据库,深度探索AI技术在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,研究科技创新领域的AI+数智化解决方案,推动科技创新与产业创新智能化发展。


数据隐私保护
