java签名与验签

基本概念:

加密解密

  加密:发送方利用接收方的公钥对要发送的明文进行加密。

  解密:接收方利用自己的私钥进行解密。

公钥和私钥配对的,用公钥加密的文件,只有对应的私钥才能解密。当然也可以反过来,用私钥加密,用对应的公钥进行解密。

签名验签

  签名:发送方用一个哈希函数从报文文本中生成报文摘要,然后用自己的私人密钥对这个摘要进行加密,得到的就是这个报文对应的数字签名

  通常来说,发送方会把数字签名和报文原文一并发送给接受者。

  验签:接收方得到原始报文和数字签名后,用同一个哈希函数从报文中生成摘要A,另外,用发送方提供的公钥对数字签名进行解密,得到摘要B,对比A和B是否相同,就可以

  得知报文有没有被篡改过。

作用

其实, 数字签名有两种功效:一是能确定消息确实是由发送方签名并发出来的,因为别人假冒不了发送方的签名。二是数字签名能确定消息的完整性。

发送方用自己的私钥完成数字签名,然后再用接收方的公钥对报文进行加密,将数字签名和报文传送给接收方。

接收方在拿到密文和数字签名后,先用自己的私钥对密文进行解密,得到明文,然后再用发送方提供的公钥进行验签,确保发送方身份的准确性,以及报文并没有被篡改过。

时间: 2024-10-23 10:54:12

java签名与验签的相关文章

RSA加密、解密、签名、验签 DSA签名、验签

重要的事情说三遍,该篇文章主要是验证JAVA的RSA签名.验签的测试代码,主要代码参考 http://xw-z1985.iteye.com/blog/1837376 重要的事情说三遍,该篇文章主要是验证JAVA的RSA签名.验签的测试代码,主要代码参考 http://xw-z1985.iteye.com/blog/1837376 重要的事情说三遍,该篇文章主要是验证JAVA的RSA签名.验签的测试代码,主要代码参考 http://xw-z1985.iteye.com/blog/1837376 下

使用RSA、MD5对参数生成签名与验签

在日常的工作中,我们对外提供的接口或调用三方的接口往往有一步生成签名或验签的步骤,这个步骤主要是验证调用方是 不是合法的以及内容是否被修改.比如:对于某些网上公开下载的软件,视频,尤其是镜像文件.如果被修改了可能会导致用不了 或者其他的问题,发布者镜像MD5算法计算一组数值.让下载的用户进行MD5数值对比,也就是MD5校验啦.由于MD5加密不可逆算, 如果数值一样,那就表示文件没有被修改的.反之,则被修改了. 接下来通过文字介绍.代码.运行结果的方式给大家介绍RSA.MD5生成签名和验签: 一.

.NET RSA解密、签名、验签

using System; using System.Collections.Generic; using System.Text; using System.IO; using System.Security.Cryptography; using System.Security.Cryptography.X509Certificates; namespace API.Tools { /// <summary> /// 类名:RSAFromPkcs8 /// 功能:RSA解密.签名.验签 /

RSA后台签名前台验签的应用(前台采用jsrsasign库)

写在前面 安全测试需要, 为防止后台响应数据返给前台过程中被篡改前台再拿被篡改后的数据进行接下来的操作影响正常业务, 决定采用RSA对响应数据进行签名和验签, 于是有了这篇<RSA后台签名前台验签的应用>. 我这里所谓的返给前台的数据只是想加密用户验证通过与否的字段success是true还是false, 前台拿这个success作为判断依据进行下一步的操作, 是进一步向后台发起请求还是直接弹出错误消息.照测试结果看这是个逻辑漏洞, 即使后台返回的是false, 在返回前台的过程中响应包被劫获

java rsa 签名,验签

package com.fabiao; import java.security.KeyFactory;import java.security.MessageDigest;import java.security.PrivateKey;import java.security.PublicKey;import java.security.spec.PKCS8EncodedKeySpec;import java.security.spec.X509EncodedKeySpec; import o

java/php/c#版rsa签名以及验签实现

本文为转载,请转载请注明地址: 原文地址为        http://xw-z1985.iteye.com/blog/1837376 在开放平台领域,需要给isv提供sdk,签名是Sdk中需要提供的功能之一.由于isv使用的开发语言不是单一的,因此sdk需要提供多种语言的版 本.譬如java.php.c#.另外,在电子商务尤其是支付领域,对安全性的要求比较高,所以会采用非对称密钥RSA 本文主要介绍如何基于java.php.c#在客户端使用rsa签名,然后在服务端使用Java验签. 基于ope

java使用Cipher进行签名和验签

public static void main(String[] args) { try { String plainText = "duwenlei"; KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance("rsa"); keyPairGenerator.initialize(2048); KeyPair keyPair = keyPairGenerator.generateKeyPai

用Java实现RSA加解密及签名和验签(1)——.pem文件格式秘钥

一.***.pem文件格式的秘钥(获取秘钥:可通过文件读取内容或者直接打开文件复制内容),我这里是打开文件复制秘钥直接使用 1.准备秘钥对,通过openssl生成秘钥对,生成秘钥可参考:https://www.cnblogs.com/ouyanxia/p/12427955.html A_RSA_PRIVATE_KEY=-----BEGIN PRIVATE KEY-----MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQDnPzYKf20JIza

用Java实现RSA加解密及签名和验签(2)——.pfx文件格式秘钥

注:.pfx 主要用于windows平台,浏览器可以使用,也是包含证书和私钥,获取私钥需要密码才可以 .pfx文件生成的方式可参考:https://www.cnblogs.com/ouyanxia/p/12427955.html 1.准备好pfx秘钥文件(alias默认是1) path=/RSA/other/openssl.pfx pwd=秘钥的秘钥(生成秘钥时记得存好) alias=1 cerPath=/RSA/other/openssl.cer 2.编写RSAUtil import java