Des加密 (Ecb模式,PKCS5Padding的填充方式),Base64编码数据

您所在的位置:网站首页 pkcs5填充规则 Des加密 (Ecb模式,PKCS5Padding的填充方式),Base64编码数据

Des加密 (Ecb模式,PKCS5Padding的填充方式),Base64编码数据

2024-07-14 12:36:14| 来源: 网络整理| 查看: 265

http在数据通信的时候,因为不像https自带链路加密,所有为了安全性,使用http协议的时候,需要给请求包进行数据加密,为了配合服务器端的解密算法,我发送端使用了Des加密。(需要跟其他平台或者语言做交换的话,各个平台/语言间的加密模式需要一致,填充方式也需要一致。不得不说的一点是DES已经被破译过,当然这种破译的代价并不低,而且并不是那么简单。如果要求更高的数据安全级别,可以选择使用3DES或者AES等。)

一.Des加密

*请注意填充模式,我使用的填充模式是PKCS5Padding,填充的模式解释可看链接:https://www.cnblogs.com/slqt/p/6559828.html

//DES_ECB_eccrypt int iTrd_Des_Ecb_Encrypt(unsigned char *pucKey, unsigned char *pucBuf, int iLen,unsigned char *pucOutPut) { int i = 0; int iTemp = 0; int iPadding = 0; int iOutLen; const_DES_cblock input; DES_cblock output; DES_cblock key; DES_key_schedule schedule; iOutLen = iLen; if(strlen(pucKey) != 8) { return 0; } memcpy(key,pucKey,8); DES_set_key_unchecked(&key, &schedule);//想用自己指定的密钥就只能调用key_unchecked if (iLen == 0) return 0; if(iOutLen%8 != 0) { iTemp = ( (iOutLen + 7) / 8 ) * 8; iPadding = iTemp - iOutLen; for (i = iOutLen; i < iTemp; i++) { //pucBuf[i] = iPadding + '0'; pucBuf[i] = iPadding; } iOutLen = iTemp; } else { for (i = iOutLen; i < iOutLen+8; i++) { //pucBuf[i] = '8'; pucBuf[i] = 8; } iOutLen += 8; } for(i =0; i < iOutLen; i = i + 8) { memcpy(input,(pucBuf + i),8); DES_ecb_encrypt(&input, &output, &schedule, DES_ENCRYPT);//openssl提供的des_ecb加密函数 memcpy(pucOutPut+i,output,8); } return iOutLen; }

注释的那两行,起初我补齐字节填充的时候填充的是字符,但是和在线加密工具的校验结果不一致,后来经过验证,直接填充数字即可,不需要转换成字符,需要注意一下这点;在线校验工具链接:http://tool.chacuo.net/cryptdes

二.base64编码

百度有很多源码,不过需要自己留心检查一下,会有一些小坑/小错误,需要自己调试的时候注意,例如字符串结束符'\0',别人可能写'/0',base64的编码表:大小写字母A-E 、a-e  ,阿拉伯数字0-9 ,以及特殊符号+ 和/ ,在编排这些的时候,源码里顺序可能给你打乱了。。。都是心机boy

//base64编码函数 long int Base64EnCode(_UC *src,long int src_len, _UC *dst) { long int i = 0, j = 0; char base64_map[65] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; for (; i < src_len - src_len % 3; i += 3) { dst[j++] = base64_map[(src[i] >> 2) & 0x3F]; dst[j++] = base64_map[((src[i] > 4) & 0xF)]; dst[j++] = base64_map[((src[i + 1] > 6) & 0x3)]; dst[j++] = base64_map[src[i + 2] & 0x3F]; } if (src_len % 3 == 1) { dst[j++] = base64_map[(src[i] >> 2) & 0x3F]; dst[j++] = base64_map[(src[i] > 2) & 0x3F]; dst[j++] = base64_map[((src[i] > 4) & 0xF)]; dst[j++] = base64_map[(src[i + 1]


【本文地址】

公司简介

联系我们

今日新闻


点击排行

实验室常用的仪器、试剂和
说到实验室常用到的东西,主要就分为仪器、试剂和耗
不用再找了,全球10大实验
01、赛默飞世尔科技(热电)Thermo Fisher Scientif
三代水柜的量产巅峰T-72坦
作者:寞寒最近,西边闹腾挺大,本来小寞以为忙完这
通风柜跟实验室通风系统有
说到通风柜跟实验室通风,不少人都纠结二者到底是不
集消毒杀菌、烘干收纳为一
厨房是家里细菌较多的地方,潮湿的环境、没有完全密
实验室设备之全钢实验台如
全钢实验台是实验室家具中较为重要的家具之一,很多

推荐新闻


图片新闻

实验室药品柜的特性有哪些
实验室药品柜是实验室家具的重要组成部分之一,主要
小学科学实验中有哪些教学
计算机 计算器 一般 打孔器 打气筒 仪器车 显微镜
实验室各种仪器原理动图讲
1.紫外分光光谱UV分析原理:吸收紫外光能量,引起分
高中化学常见仪器及实验装
1、可加热仪器:2、计量仪器:(1)仪器A的名称:量
微生物操作主要设备和器具
今天盘点一下微生物操作主要设备和器具,别嫌我啰嗦
浅谈通风柜使用基本常识
 众所周知,通风柜功能中最主要的就是排气功能。在

专题文章

    CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭