没有看到所谓的签名自验证的说法。 我想你指的应该是数字签名自带证书,然后用证书来验证签名吧。
其实这是一种签名的格式。被称为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认证的签名机制,也就是说,想要签名,必须拥有经过认证的数字证书。
uc浏览器破解版无限云收藏是真的吗 是真的但是破解版毕竟不是正版,下载还是有一定风险的。破解版的任何软件,基于法律考虑都是不合法的,是没有经过授权的盗用版本。原则上不支持。是的,有人可以让你下载UC浏...
怎样可以破解vⅰv0手机密码? vivo手机忘记锁屏密码可通过以下方法找回密码:1、在锁屏界面连续输错五次锁屏密码,点击忘记密码(没有此选项可参考下面方法)通过锁屏密保修改锁屏密码。2、可以携带手机前...
寻屏幕录像用的工具 推荐两个给楼主.一个是屏幕录像大师.这个要注册.但是注册程序很简单. 可以录制exe文件和avi文件另外一个是:HYPER 这个攻能和屏幕录像大师差不多.不过还是推荐你用HYP...
苹果手机在哪里可以下载到元气骑士破解版? 可通过A精灵能够下载IOS的元气骑士破解版,元气骑士破解版是一款像素闯关类游戏展开全数元气骑士ios1.3,己喜好的脚色进行射击战役玩家们能够在游戏当选择自,...
苹果微信黑名单怎么拉回来? 打开微信APP,进入微信后,点击『我』,再点击『设置』进入。 进入新页面后,点击『朋友权限』进入。 然后点击『通讯录黑名单』进入下一页面。 点击自己需要放出黑名单的人进入。...
如何让水表不走? 问题一:怎样才能让水表不转 我们的经验是在水表上加上强的磁场。通常的做法是在上面放上一大块磁铁。理由是因为磁铁放上之后,水表内部会受到磁力的影响,使得水表内部的零件摩擦力增大。我们这...