请问这个签名 java 应该怎么解析
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了请问这个签名 java 应该怎么解析相关的知识,希望对你有一定的参考价值。
生成签名没有问题 , 求解析验证签名的代码
楼主好,MD5签名是消息摘要,用于验证是否被篡改,不能解密.方法是接收方用发送方的签名算法,重新计算一次签名,然后比对结果.
请看示例代码(原创,已通过测试):
import java.io.UnsupportedEncodingException;import java.util.Map;
import java.util.TreeMap;
import org.springframework.util.DigestUtils;
/**
* 仅用于演示.用于生产需完善细节处理.
* @author breakenkinfe
*/
public class MD5Sign
static String md5Sign(Map<String,String> data) throws UnsupportedEncodingException
String stringSignTemp="";
for(String key:data.keySet())
if("sign".equals(key))
continue;//sign不参与签名
String value=data.get(key);
if(value==null||value.trim().isEmpty())
continue;//值为空不参与签名
stringSignTemp+=(key+"="+data.get(key)+"&");
if(!stringSignTemp.isEmpty())
stringSignTemp=stringSignTemp.substring(0, stringSignTemp.length()-1);//去掉最后一个'&'字符
// System.out.println("待签明文:"+stringSignTemp);
return DigestUtils.md5DigestAsHex(stringSignTemp.getBytes("UTF-8")).toUpperCase();
static void validSign(Map<String,String> data) throws UnsupportedEncodingException
String sign=data.get("sign");
boolean rs= sign.equals(md5Sign(data));
if(rs)
System.out.println("签名正确:"+sign);
else
System.out.println("签名错误:"+sign);
public static void main(String[] args) throws UnsupportedEncodingException
//报文数据
Map<String,String> data=new TreeMap<String,String>();//保证key按ascii升序排列
data.put("key3", "value3");
data.put("key1", "value1");
data.put("key4", " ");
data.put("key2", "value2");
System.out.println("数据集:"+data);
//发送方增加签名
String sign=md5Sign(data);
System.out.println("MD5签名:"+sign);//output:38727F53497BF85E0BA60DE403C61B83
data.put("sign", sign);
//接收方验证签名
validSign(data);//正确
data.put("sign", "38727F53497BF85E0BA60DE403C61B80");
validSign(data);//错误
/** 输出:
数据集:key1=value1, key2=value2, key3=value3, key4=
MD5签名:38727F53497BF85E0BA60DE403C61B83
签名正确:38727F53497BF85E0BA60DE403C61B83
签名错误:38727F53497BF85E0BA60DE403C61B80
*/ 参考技术A 我告诉你怎么做追答
是验证签名ba
参考技术B 太简单了 这个追问能把代码发我吗, 861888570 , 不是生成签名的代码 是解析签名代码
请问java中parse()的问题
请问怎么用parse()方法
这个方法是按照特定的格式把字符串解析为日期对象的对吧?
谢谢1楼的
我试了下如果不加 throws ParseException就报错
加的话可以正常运行
import java.text.SimpleDateFormat;
import java.util.Date;
public class DateTest
public static void main(String[] args) throws ParseException
String date="1988-10-10 20:10:10";
Date d=null;
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
d=sdf.parse(date);//将String to Date类型
System.out.println(d);
一个小例子...刚写的...
祝楼主早日成功!!
还有什么不明白的..百度HI我...!
老大这是抛出一定要有的可好 。。。
你没有学过异常吧??
赶紧找书学一下吧!!本回答被提问者采纳
以上是关于请问这个签名 java 应该怎么解析的主要内容,如果未能解决你的问题,请参考以下文章