算法-LUA实现一种报文签名加密
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了算法-LUA实现一种报文签名加密相关的知识,希望对你有一定的参考价值。
参考技术A接入系统与XX特色前置的通讯报文采用报文体MAC签名,签名用来识别来源的合法性和报文体是否遭篡改或破坏。MAC签名值生成的步骤如下:
经过咨询同事,公司crypt库中有现成的MD5加密方法;
果断复用!!!
验证:将字符串“123456” 按标准md5算法 后应该是 E10ADC3949BA59ABBE56E057F20F883E
crypt库中与MD5相关的有3个:
验证1:-- 不一致
验证2: -- 一致可用
调用加密机SM4算法加解密数据
关键code
--对数据每两位进行字节压缩
--对压缩后的数据转为字节
--解码:获取的前16字节
--解码:获取的前17-32字节转为byte
报文加密和签名设计
参考技术A数据信息安全对我们每个人都有很重要的意义,从接触互联网起,我就明白了数据的重要性,我对数据安全的要求极其高,毫不夸张的说我的电话从来没有接过推销和骚扰电话,我本人很讨厌这种事情,对买卖数据和泄露数据的事情比较痛恨,自从做了金融以后,我对数据安全的认识又有了新的认识,接过几家支付通道后,对支付方面的业务有了了解,根据业务需要我开始写支付外放接口,说实话安全设计很让我头痛,最初使用的方式是对报文进行 MD5 加密,并得出一个签名串, 签名串=MD5(原文&密钥) ,如果黑客截取报文,并篡改报文,那么服务端进行验签的时候,将不会通过,因为报文变化了,算出的签名串会改变,那么黑客需要重新计算出签名串,要算出签名串,需要知道加密规则,密钥,这种方式虽然保证了安全,但是存在一个问题,报文是暴露的,黑客并不更改数据,他只是记录保存你暴露的数据,这样也是非常危险的,经过借鉴和学习采用了另一种解决方案, 为保证接口调用过程中报文的完整性,报文使用 MD5 签名算法,为保证接口调用过程中对用户的敏感信息的保护,对涉及用户敏感信息(如账号,名称,手机号等)的域进行 AES 加密 。
采用 MD5(data+"&key="+md5Key).toUpperCase() 方式签名,其中: md5Key 为自己规定的 MD5 签名密钥。最后将获取到的签名串转换为大写。设所有发送或者接收到的数据为集合M,将集合M 内非空参数值的参数按照参数名 ASCII 码从小到大排序( 字典序),得到字符串,使用 URL 键值对的格式( 即 key1=value1&key2=value2 … ) 拼接成字符串 data 。在 data 最后拼接上 key 并对其进行 MD5 运算,再将得到的字符串所有字符转换为大写,得到签名值。
AES 加密模式为 "AES/ECB/PKCS5Padding" ,待加密数据使用 AESKey 加密之后做 Base64 得到加密数据。 AESKey 长度为16 位,由26个字母和数字组成。
博客原文地址: 报文加密和签名设计
以上是关于算法-LUA实现一种报文签名加密的主要内容,如果未能解决你的问题,请参考以下文章
(密钥)私钥和公钥 数字签名原理?(机密性报文完整性端点鉴别)(明文密文)(加密算法解密算法 AESDESRSA)(对称密钥系统公开密钥系统密码散列函数哈希散列函数)