西安北郊做网站公司海盐网站设计

web/2025/10/2 19:18:14/文章来源:
西安北郊做网站公司,海盐网站设计,餐馆网站模板,php网站开发薪资概念理解mac算法是(Message Authentication Codes 消息认证码算法)#xff0c;是含有密钥散列函数算法。主要通过异或运算#xff0c;再配合其他加密算法实现mac值的运算#xff0c;用于校验。实现过程将需要加密计算的字符串转换为16进制字符串例如#xff1a;密钥#x…概念理解mac算法是(Message Authentication Codes 消息认证码算法)是含有密钥散列函数算法。主要通过异或运算再配合其他加密算法实现mac值的运算用于校验。实现过程将需要加密计算的字符串转换为16进制字符串例如密钥12345678901234567890123456789012待加密数据(字符串形式):6000112018111411003020170930101010120171025000755000000005553转化为16进制36303030 31313230 31383131 31343131 30303330 32303137 30393330 31303130 31303132 30313731 30323530 30303735 35303030 30303030 30353535 33将转换过的16字符串进行补位分组部位后的数据(部位规则字符长度%32!0补位)36303030 31313230 31383131 31343131 30303330 32303137 30393330 31303130 31303132 30313731 30323530 30303735 35303030 30303030 30353535 33000000分组后的数据第 0组明文:36303030 31313230 31383131 31343131第 1组明文:30303330 32303137 30393330 31303130第 2组明文:31303132 30313731 30323530 30303735第 3组明文:35303030 30303030 30353535 33000000将分组过的字符串数组逐步进行异或运算异或流程第 0组明文: 36303030 31313230 31383131 31343131第 1组明文: 30303330 32303137 30393330 31303130第 1组异或结果:06000300 03010307 01010201 00040001第 2组明文:31303132 30313731 30323530 30303735第 2组异或结果:37303232 33303436 31333731 30343734第3组明文:35303030 30303030 30353535 33000000与第2组密文异或:02000202 03000406 01060204 03343734将最后异或结果转化为16进制字符串转换为16进制30323030 30323032 30333030 30343036 30313036 30323034 30333334 33373334取前16位和后16位前16位进行sm4加密加密结果与后16位异或后再加密前16位30323030 30323032 30333030 30343036后16位30313036 30323034 30333334 33373334前16位加密结果B038A2B2 F3FFE3C8 AC60B377 C70C2DB1与后16位异或结果80099284 C3CDD3FC 9C538043 F43B1E85再加密结果1E80F373 40B0FEE6 2C81F356 AFB20BF1取前16个字符作为mac值mac值1E80F37340B0FEE6具体实现过程准备工作数据转换工具类 TransferUtils.java字符串转换为16进制字符串public static String StringToHexString(String str) {String data bytesToHexString(str.getBytes(), 32);return data;}字节数组转换为16进制字符串/*** 字节数组转化为十六进制字符串 并按照len的倍数进行补0* param bytes 字节数据* param len 部位原则 不够len倍数补0* return*/public static String bytesToHexString(byte[] bytes, int len) {StringBuffer hexStr new StringBuffer();for (byte b : bytes) {hexStr.append(String.format(%02x, new Integer(b 0xff)));}//长度不满32的整数倍 在后边添加 0while (hexStr.length() % len ! 0) {hexStr.append(0);}return hexStr.toString();}将字符串str 按照长度len 进行分组/*** 将字符串str 按照长度len 进行分组* param str 字符串* param len 每组字符长度* return*/public static String[] dataGrouping(String str, int len) {int lenth str.length() % len 0 ? str.length() / len : str.length() / len 1;String[] data new String[lenth];for (int i 0; i lenth; i) {data[i] str.substring(i * len, i * len len);}return data;}将字符串数组进行异或运算public static String handleXOrStringArr(String[] strs){String result ;for (int i 1;i strs.length;i){if (i 1){result xOr(strs[0],strs[1]);}else {result xOr(strs[i],result);}}return result;}异或运算/*** 异或运算* param s1* param s2* return*/public static String xOr(String s1, String s2) {String data IntArr2String(xOr(String2IntArr(s1),String2IntArr(s2)));return data;}public static int [] xOr(int[] i1,int[] i2){int[] xor new int[i1.length];for (int i 0;i i1.length i i2.length;i){xor[i] i1[i]^i2[i];}return xor;}加密工具类sm4加密public static byte[] encodeSMS4(byte[] plaintext, byte[] key) {byte[] ciphertext new byte[plaintext.length];int k 0;int plainLen plaintext.length;while (k 16 plainLen) {byte[] cellPlain new byte[16];for (int i 0; i 16; i) {cellPlain[i] plaintext[k i];}byte[] cellCipher encode16(cellPlain, key);for (int i 0; i cellCipher.length; i) {ciphertext[k i] cellCipher[i];}k 16;}return ciphertext;}调用过程将密钥转换为字节数组将需要加密计算的字符串转换为16进制字符串并补位例如密钥12345678901234567890123456789012待加密数据(字符串形式):6000112018111411003020170930101010120171025000755000000005553//将key转换为字节数组byte[] keys TransformUtils.HexStringToByteArr(key);//将加密数据转换为16进制字符串String hexData TransformUtils.StringToHexString(data);将转换过的16字符串进行分组//将数据分组 32位为一组String[] dataGroup TransformUtils.dataGrouping(hexData, 32);将分组过的字符串数组逐步进行异或运算//进行异或运算String xorData TransformUtils.handleXOrStringArr(dataGroup);将最后异或结果转化为16进制字符串//将异或结果转化为16进制字符串String hexOxrData TransformUtils.StringToHexString(xorData);取前16字节和后16字节前16字节进行sm4加密加密结果与后16字节异或后再加密//取前16字节和后16字节 两个16进制位表示一个字节String start32Bit hexOxrData.substring(0,32);String end32Bit hexOxrData.substring(hexOxrData.length() - 32,hexOxrData.length());//前16位进行首次加密byte[] encodeSMS4_1 SMS4.encodeSMS4(TransformUtils.HexStringToByteArr(start32Bit), keys);//加密结果与后16位进行异或String xOrEnd TransformUtils.xOr(TransformUtils.bytesToHexString(encodeSMS4_1, 16), end32Bit);//异或结果转成字节数组byte[] bytes TransformUtils.HexStringToByteArr(xOrEnd);//进行二次加密byte[] resultByte SMS4.encodeSMS4(bytes, keys);//将加密结果转换成16进制字符串 并取前八个字符作为mac值返回String result TransformUtils.bytesToHexString(resultByte, 16);取前16个字符作为mac值//取前8字节作为mac值返回result result.substring(0,16);后记此处是pos终端mac国密(sm4)算法之前还有一个pos终端mac国际算法(双倍长 3des)两者的区别在于 分组的时候分组长度不太一样国际是16个16进制字符(8字节)分组国密是32个16进制字符(16字节)分组再有不同的地方就是加密算法不同国密是sm4加密算法国际是双倍长3des加密算法其他基本都是一样的这个加密算法也是根据需求可以进行更改的 比如改为RSA 或AES也是可以的这个就需要双方沟通了 统一加密算法就可以了

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/85777.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

怎么自己做代刷网站淘宝做推广网站

1、 使用互斥量QMutex时候存在一个问题 每次只能有一个线程获得互斥量的权限。如果在一个程序中有多个线程“读”取某个变量,使用互斥量时也必须排队! 然而,实际情况是允许:让多个线程同时“读”! 这样互斥量 就会降…

久久营销网站盐城营销网站建设

科目三是公认最难的考试科目,它不像科目二练习是在驾校训练场,有些技术不错的学员也会卡在这个项目上,由于突发状况多,了解考试流程是必不可少的。考试流程:1、上车前的准备工作2、上车起步3、变更车道4、直线行驶5、学…

网站建设中是因为没有ftp上传吗asp网站建设报告书

给你两棵二叉树的根节点 p 和 q ,编写一个函数来检验这两棵树是否相同。 如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。 力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台 代码如下:…

muse cc 做网站百度挂广告怎么收费

商家转账到零钱是什么? 通过商家转账到零钱这个功能,如果我们系统需要对用户支付费用,比如发放佣金、提成、退款之类的,可以直接转账到用户的微信零钱。 【商家转账到零钱】是【企业付款到零钱】的升级版,2022年5月1…

可以进入的网站石家庄seo推广

工业交换机可以说是工业安防工程中很重要的一款设备,在网名使用工业交换机的过程中,难免会遇到一些故障问题,在这其中工业交换机的端口故障可以说是是最常见的硬件故障,无论是光纤端口还是双绞线的RJ-45端口,在插拔接头…

国内优秀设计网站推荐wordpress重置密码链接无效

随着全域运营赛道的兴盛,越来越多的全域运营平台陆续上线,拓宽全域运营服务商选择空间的同时,也让全域运营平台选择成为了他们最为头疼的问题。在此背景下,各大全域运营平台背后的研发公司开始各出奇招,以获得更多全域…

网站免费大全苏州企业建设网站价格

PoE供电是指在以太网中透过双绞线来将电力传输到设备的技术,它无需改动现有的以太网布线基础架构,在为一些基于IP的终端传输数据信号的同时,还能为此类设备提供直流供电。透过这项技术,可以供电给网路电话、无线、网路摄影机、集线…

网站开发人员工具种类厦门外贸网站建

上篇文章我介绍了如何强制令牌过期的实现,相信大家对IdentityServer4的验证流程有了更深的了解,本篇我将介绍如何使用自定义的授权方式集成老的业务系统验证,然后根据不同的客户端使用不同的认证方式来集成到统一认证平台。.netcore项目实战交…

外贸网站域名被封商标设计用什么软件

目录 1.HTTP 1.1HTTP是什么 1.2理解“应用层协议” 1.3理解HTTP协议的工作过程 2.HTTP协议格式 2.1抓包工具的使用 2.2抓包工具的原理 2.3抓包结果 3.协议格式总结 1.HTTP 1.1HTTP是什么 HTTP(全称为“超文本传输协议”)是一种应用非常广泛的应…

如何建设网站网站东莞网站建设dgjcwl

RabbitMQ 是一个开源的消息队列系统,是高级消息队列协议(AMQP)的标准实现,用 erlang 语言开发。 因此安装 RabbitMQ 之前要先安装好 erlang。 1、安装 erlang 到 这里 下载本机能运行的最新版 erlang 安装包。如果本机没有装过 …

北京网站制作公司建站万能网页视频下载

【Python练习题 005】输入三个整数x,y,z,请把这三个数由小到大输出。 ----------------------------------------------------------------------- 这题想想应该比较容易:无非是先获取3个数字,然后比大小,按顺序输出即可。不过在写…

企业网站服务器建设方法上海站群优化

1. 转帖别人的内容 来源:https://www.2cto.com/net/201112/114937.html 2. 本地用IPV6单播地址 (包括链路本地单播地址 和 站点本地单播地址) 2.1 链路本地单播地址 规定了链路本地和站点本地两种类型的本地使用单播地址。链路本地地址用在单链路上, 而…

安徽经工建设集团网站合肥网站优化软件

目录 一、安装Nacos 二、启动nacos 三、进入可视化界面 因项目用到nacos,所以需要装一个,顺便写篇文章记录 一、安装Nacos 前往官网下载:Nacos官网homehttps://nacos.io/zh-cn/ # 解压 unzip nacos-server-2.3.0.zip 二、启动nacos …

网站你懂我意思正能量appWordPress无法取消置顶文章

同学你好!本文章于2021年末编写,获得广泛的好评! 故在2022年末对本系列进行填充与更新,欢迎大家订阅最新的专栏,获取基于Pytorch1.10版本的理论代码(2023版)实现, Pytorch深度学习理论篇(2023版)目录地址…

长春企业免费建站360地图怎么添加商户

2019独角兽企业重金招聘Python工程师标准>>> 开始写博客,自己是边学习边做开发,将自己开发的过程记录下来,能够对学习的知识进行梳理,也可以对学习做个总结。 首先是对项目的介绍: 做一个功能全面的软件&am…

兰州企业网站建设做最好最全的命理网站

2019独角兽企业重金招聘Python工程师标准>>> MySQL并不是跳过offset行,而是取offsetN行,然后返回放弃前offset行,返回N行,那当offset 特别大的时候,效率就非常的低下,要么控制返回的总页数&…

苏州营销网站建设公司排名开发h5网站开发

base64原理及其编解码的python实现base64base64简介base64编码表base64编码原理base64编解码的python实现其他base编码base16base32base36、base58、 base62、 base85、base91、 base92base64 base64简介 base64是一种基于64个可打印字符来表示二进制数据的表示方法。2664&am…

做网站最好用的软件系统开发和网站开发

一、概述 布隆过滤器本质上是一个很长的二进制数组,主要用来判断一个数据存不存在数组里,如果存在就用1表示,不存在用0表示,它的优点是空间效率和查询时间都比一般的算法要好的多,缺点是有一定的误识别率和删除困难。 …

广州网站外贸推广青岛网站优化多少钱

简单工厂模式 可以根据参数的不同返回不同类的实例 参考: CSDN|简单工厂模式 简单工厂通过传给工厂类的参数的不同,返回不同的对象,包括三部分组成: 具体的”产品“工厂类(实例化并返回”产品“)客户端&am…

怎么在京东做网站网站建设相关新闻

事务简介 事务(transaction)是传统数据库所具备的一项基本能力,其根本目的是为数据的可靠性与一致性提供保障。而在通常的实现中,事务包含了一个系列的数据库读写操作,这些操作要么全部完成,要么全部撤销。…