没有看到所谓的签名自验证的说法。 我想你指的应该是数字签名自带证书,然后用证书来验证签名吧。
其实这是一种签名的格式。被称为P7。 就是在信息中包含长度,算法,明文,签名串和证书公钥。 收到以后,可以自动用证书来验证。 这些算法很多。你可以去找,很容易查到。
这种签名的关键是证书也需要被验证。这种做法一般是双方拥有发证CA的公钥,来验证证书的合法性。这也有很多的。
java 搭建?安装JDK,配置path和classPath不就行了吗?Eclipse是免费的,都不用破解啊。
楼主好,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(MapString,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(MapString,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 {
//报文数据
MapString,String data=new TreeMapString,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
*/
破解数字签名基本上是不可能的,签名的机制类似于SSL认证的签名机制,也就是说,想要签名,必须拥有经过认证的数字证书。
空间站也装上了WiFi,网友:能蹭网吗,会被黑吗 1、收心吧,答案是不能,除非能上天。那么网络会不会被黑呢?这个问题很有价值,毕竟空间站的WiFi承担着站内数据的传输任务,连接着站内的各种终端设备。不...
不用实名认证的三国游戏 不用实名认证的三国游戏:三国咸鱼之王无实名认证破解版v1.0.0、逍遥三国所有妃子图破解版v1.0。三国咸鱼之王无实名认证破解版是一款无需实名认证即可畅玩的三国策略类手游,游戏...
口袋妖怪织女星种族值 308。口袋妖怪织女星HP:42、攻击:53、防御:40、特攻:63、特防:40、速度:70,总属性值308,是官方设计平衡游戏的一个数值,不会因为数值高低失去玩家捕捉的意愿。在...
《天下》手游电脑版辅助教程 打开手游电脑版辅助工具,进行账号注册并登陆。点击或搜索天下进入对应游戏辅助专区,选择其中一款辅助,并点击运行。在模拟器界面会弹出是否授予管理员权限,这里点击允许即可。猩猩助...
三国塔防传奇破解版 传奇塔防怎么调中文我们要先走完新手教学的流程,打完两个关卡以后才能自由行动。当新手教学结束以后,我们点击画面右上角的设置按钮。在弹出的窗口中找到右下角的LANGUAGE,点击蓝色框...
破解的ps3怎么看高清电影 1、PS3用U盘或者移动硬盘看高清电影有很多局限性。首先移动存储设备只有FAT32格式才能被PS3识别,所以放不了容量大于4G的视频。其次PS3支持的视频格式很少,用sho...