openssl c++ 3des ecb 加密
来源:互联网 发布:Linux安装sip 编辑:程序博客网 时间:2024/06/10 16:30
对接外部合作方,用到了3des ecb 加密,其中的补全方式为 PKCS5Padding。具体的算法原理可以网上找,网上很多,但是代码的坑比较多。
直接上实现后的代码了:
int Des3EdsEncrypt(const std::string& rand_key, const std::string& in, std::string& out){char out_array[10240];char in_array[10240];memset(out_array, 0, 10240);memset(in_array, 0, 10240);DES_key_schedule keyschedc1;DES_key_schedule keyschedc2;DES_key_schedule keyschedc3;if (rand_key.size() < 24){LOG_ERROR("rand_key size < 24");return -1;}DES_set_key((DES_cblock *)rand_key.substr(0,8).c_str(), &keyschedc1);DES_set_key((DES_cblock *)rand_key.substr(8,8).c_str(), &keyschedc2);DES_set_key((DES_cblock *)rand_key.substr(16,8).c_str(), &keyschedc3);//数据不足8位的时候后面需要补齐 如果是取余为0,则补8个0int data_rest = in.size()%8;char ch = 8-data_rest;int len = (in.size()/8 + 1)*8;for (int i=0; i<in.size(); ++i)in_array[i] = in.at(i);memset(in_array + in.size(), ch, 8 - data_rest);for (int i=0; i<len; i += 8){ DES_ecb3_encrypt((DES_cblock *)(in_array + i), (DES_cblock *)(out_array + i), &keyschedc1, &keyschedc2, &keyschedc3, DES_ENCRYPT);}out.assign(out_array, len);return 0;}
阅读全文
0 0
- openssl c++ 3des ecb 加密
- objective-c java C# 3DES ECB 加密
- 3DES 和 ECB CBC 加密方式
- android java 3des加密 ECB/CBC
- 3DES 和 ECB CBC 加密方式
- 3DES 和 ECB CBC 加密方式
- 3DES 和 ECB CBC 加密方式
- DES(ecb)加密
- C/C++: 3DES-ECB模式加密,可以与C#和Java互通
- DES-ECB加密与解密
- 3des加密(双倍长)(ECB,CBC)详细介绍
- openssl实现3des对称加密
- OpenSSL 做3DES加密 实现
- openssl des 加密解密
- DES(ECB) DES(CBC) 3DES
- 使用openssl库实现des,3des加密
- 使用openssl库实现des,3des加密
- 使用openssl库实现des,3des加密
- jzoj4417 【HNOI2016模拟4.1】神奇的字符串 (映射,权值线段树)
- jquery 选中匹配多个属性值 获取 勾选的checked 的input标签
- Linux 权限管理命令
- QJSON和curl实现客户端
- OSPF协议的LSA
- openssl c++ 3des ecb 加密
- Transaction rolled back because it has been marked as rollback-only
- 奇偶剪枝&1010 Tempter of the Bone
- PHP HTTP客户端-Guzzle原理解析
- 1028. List Sorting (25)
- 我的AI转型之路与AI之我见(非985211的奋斗路程与视角)
- nio 使用的都是直接内存吗?
- Java多线程综述
- BZOJ3343[教主的魔法]