请问这个签名 java 应该怎么解析

请问这个签名 java 应该怎么解析,第1张

楼主好,MD5签名是消息摘要,用于验证是否被篡改,不能解密方法是接收方用发送方的签名算法,重新计算一次签名,然后比对结果

请看示例代码(原创,已通过测试):

import javaioUnsupportedEncodingException;

import javautilMap;

import javautilTreeMap;

import orgspringframeworkutilDigestUtils;

/

  仅用于演示用于生产需完善细节处理

  @author breakenkinfe

 /

public class MD5Sign {

static String md5Sign(Map<String,String> data) throws UnsupportedEncodingException {

String stringSignTemp="";

for(String key:datakeySet()) {

if("sign"equals(key)) {

continue;//sign不参与签名

}

String value=dataget(key);

if(value==null||valuetrim()isEmpty()) {

continue;//值为空不参与签名

}

stringSignTemp+=(key+"="+dataget(key)+"&");

}

if(!stringSignTempisEmpty()) {

stringSignTemp=stringSignTempsubstring(0, stringSignTemplength()-1);//去掉最后一个'&'字符

}

// Systemoutprintln("待签明文:"+stringSignTemp);

return DigestUtilsmd5DigestAsHex(stringSignTempgetBytes("UTF-8"))toUpperCase();

}

static void validSign(Map<String,String> data) throws UnsupportedEncodingException {

String sign=dataget("sign");

boolean rs= signequals(md5Sign(data));

if(rs) {

Systemoutprintln("签名正确:"+sign);

}else {

Systemoutprintln("签名错误:"+sign);

}

}

public static void main(String[] args) throws UnsupportedEncodingException {

//报文数据

Map<String,String> data=new TreeMap<String,String>();//保证key按ascii升序排列

dataput("key3", "value3");

dataput("key1", "value1");

dataput("key4", " ");

dataput("key2", "value2");

Systemoutprintln("数据集:"+data);

//发送方增加签名

String sign=md5Sign(data);

Systemoutprintln("MD5签名:"+sign);//output:38727F53497BF85E0BA60DE403C61B83

dataput("sign", sign);

//接收方验证签名

validSign(data);//正确

dataput("sign", "38727F53497BF85E0BA60DE403C61B80");

validSign(data);//错误

}

}

/ 输出:

数据集:{key1=value1, key2=value2, key3=value3, key4= }

MD5签名:38727F53497BF85E0BA60DE403C61B83

签名正确:38727F53497BF85E0BA60DE403C61B83

签名错误:38727F53497BF85E0BA60DE403C61B80

/

<dependency>

<groupId>commons-codec</groupId>

<artifactId>commons-codec</artifactId>

<version>16</version>

</dependency>

DigestUtilsmd5Hex(str)

需要导入一个jar包:commons-codec

代码如下:

import orgapachecommonscodecdigestDigestUtils; 

public class ToMain {

public static void main(String[] args) {

Systemoutprintln(DigestUtilsmd5Hex("baiducom"));

}

}

1、Java

Java是一种可以撰写跨平台应用软件的面向对象的程序设计语言。Java 技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于PC、数据中心、游戏控制台、科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。

2、名字来源

Java是印度尼西亚爪哇岛的英文名称,因盛产咖啡而闻名。Java语言中的许多库类名称,多与咖啡有关:如JavaBeans(咖啡豆)、NetBeans(网络豆)以及ObjectBeans(对象豆)等等。SUN和JAVA的标识也正是一杯正冒着热气的咖啡。

以上就是关于请问这个签名 java 应该怎么解析全部的内容,包括:请问这个签名 java 应该怎么解析、谁给个md5的Maven dependence,要能用的!附上用法。、java 有哪些jar包直接提供了获得md5值的方法等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/9826128.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-02
下一篇2023-05-02

发表评论

登录后才能评论

评论列表(0条)

    保存