DES加解密 cbc模式 的简单讲解 && C++用openssl库来实现的注意事项 |
您所在的位置:网站首页 › dnf史诗如何封装2022 › DES加解密 cbc模式 的简单讲解 && C++用openssl库来实现的注意事项 |
DES cbc是基于数据块加密的。数据块的长度为8字节64bit。以数据块为单位循环加密,再拼接。每个数据块加密的秘钥一样,IV向量不同。第一个数据快所需的IV向量,需要我们提供,从第二个数据块开始,所需的IV向量为上一个数据块生成的密文。 IV向量该怎么赋值, 它跟秘钥KEY有什么关系,这一点,我暂时不清楚,如果您知道,请留言讲一下,非常感谢。我知道的是java里头调用库只传了一个KEY参数,工作经验认知是,java默认IV向量跟秘钥KEY是一样的值。 DES加密的填充方式有多种,分别是 ansix923、iso10126、zeropadding、pkcs5padding、pkcs7padding。 那么cbc模式加密的填充方式也不例外。然而,解密的过程,只需要把密文分割成8字节一块,循环解密再做拼接。 C++可调用openssl库实现DES加解密。但是openssl提供的接口只满足对一个数据块8个字节的加解密,实际使用,需要自己实现不同的填充方式。 openssl库加密的结果是不可识别的二进制字符串,需要转为可识别的十六进制或者Base64格式。 因为工作中用到三种,下面对三种填充方式做简单讲解。 一、zeropadding 如果明文正好是8字节整数倍长度,则不需填充。如果明文不是8字节整数倍长度,则最后一部分,不足8字节,用0填充。 12345678 ----->> 12345678 12345678 12345678 ----->> 12345678 12345678 12345678 91 ----->> 12345678 91000000 12345678 9123 ----->>12345678 91230000 二、pkcs5padding 如果明文正好是8字节整数倍长度,则不需填充。如果明文不是8字节整数倍长度,则最后一部分,剩余m字节,差n=(8-m)字节,用n填充 12345678 ----->> 12345678 12345678 12345678 ----->> 12345678 12345678 12345678 91 ----->> 12345678 91777777 12345678 9123 ----->> 12345678 91234444 三、pkcs7padding 同pkcs5padding
附1:C++调用openssl库实现的DES加密解密完整代码 附2:C++二进制字符串转十六进制字符串 C++十六进制字符串转二进制字符串 附3:C++二进制字符串转Base64字符串 C++Base64字符串转二进制字符串 C++base64格式和nonSafeBase64格式转换 附4:C++ 使用openssl库实现 DES 加密——CBC模式 && RSA加密——公加私解——私加公解
|
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |