`

RSA公私钥加解密验签测试

阅读更多
package com.company.util;

import java.security.*;
//http://www.fengfly.com/plus/view-210090-1.html
public class SimpleSignature {
 /*
  *
1. A用自己的私钥,对abcdefg进行sign,sign()函数返回一个byte[],这就是电子签名。
2.把A的公钥、签名、abcdefg送到工行后台
3.工行先看A的密码输的对不对,做一个数据库校验
工行用A的公钥对A的签名做verify运算,也得到一个byte[]
4.工行把A发过来的签名byte[](即signatureBytes) 和   用A的公钥   做verify(),返回boolean verified
5.如果verified为true,代表A一定是客户A本人且是工行的客户(当然,A如果被人杀了,并且A的私钥被杀他的人获得了这个不能算工行的责任)
  * */
 private static void digitalSign(String text) throws Exception {
  //1、生成秘钥对
  KeyPairGenerator kpg = KeyPairGenerator.getInstance("RSA");
  kpg.initialize(1024);
  KeyPair keyPair = kpg.generateKeyPair(); //公私钥
  //2、私钥签名
  byte[] data = text.getBytes("UTF8");
  Signature sig = Signature.getInstance("MD5WithRSA");
  sig.initSign(keyPair.getPrivate()); //私钥
  sig.update(data);
  byte[] signatureBytes = sig.sign(); //私钥签名
  System.out.println("签名后:\n" + Base64.encode(signatureBytes));
  //3、公钥验签
  Signature sig2 = Signature.getInstance("MD5WithRSA");
  sig2.initVerify(keyPair.getPublic()); //公钥
  sig2.update(data);
  boolean verified = false;
  try {
   verified = sig2.verify(signatureBytes); //验签
  } catch (SignatureException se) {
   se.printStackTrace();
   verified = false;
  }
  if (verified) {
   System.out.println("验签通过.");
  } else {
   System.out.println("验签失败.");
  }
 }

 public static void main(String[] args) {
  try {
   String text = "abc"; //报文
   digitalSign(text);
  } catch (Exception e) {
   e.printStackTrace();
  }
 }

}


 

 

分享到:
评论

相关推荐

    java 使用RSA生成公私钥对、加解密、及签名验签

    下面我们将深入探讨如何在Java中使用RSA生成公私钥对、进行加解密以及实现签名和验签。 1. **生成公私钥对**: - 使用`java.security.KeyPairGenerator`类,通过`getInstance("RSA")`方法获取RSA的...

    使用RSA生成公私钥对、加解密、及签名验签 JAVA源码.rar

    本资源提供了使用JAVA实现RSA公私钥对生成、数据加解密以及签名验签的源代码,非常适合学习和设计参考。 首先,我们要了解RSA算法的基本原理。RSA是由Ron Rivest、Adi Shamir和Leonard Adleman三位科学家于1977年...

    RSA加密解密签名加签验签RsaUtils工具类

    RSA加密解密签名加签验签RsaUtils工具类 RSA算法基于大数因子分解难题,提供了公钥加密和私钥解密的能力。公钥用于加密,私钥则负责解密。这种特性使得RSA成为保证数据传输安全的理想选择。 公钥加密私钥解密与...

    RSA加密、解密、验签工具类

    RSA加密工具类,公私钥加解密、公私钥验签,读取私钥.ps8方法。

    RSA2--》加签+加密+解密+验签

    本文将详细讲解RSA算法的加签、加密、解密以及验签的过程,结合Java语言来实现这一系列操作,并涉及到证书的使用。 首先,我们需要理解RSA算法的基本原理。RSA算法基于两个大素数的乘积难以分解这一数学难题,生成...

    RSA签名验签工具windows_V1.4.zip_rsa_rsa2生成签名_rsa签名工具_工具_验签

    总结来说,这个“RSA签名验签工具windows_V1.4.zip”提供了一站式的解决方案,涵盖了RSA和RSA2签名生成、验签以及公私钥的创建,对于需要处理这些安全问题的Windows用户来说,是一个非常实用的工具。通过理解和使用...

    C# RSA加密、解密、加签、验签、支持JAVA格式公钥私钥、PEM格式公钥私钥、.NET格式公钥私钥

    C# RSA加密、解密、加签、验签、支持JAVA格式公钥私钥、PEM格式公钥私钥、.NET格式公钥私钥 对应文章: http://blog.csdn.net/gzy11/article/details/54573973

    mbedtls RSA PSS加密验签.pdf

    1. 使用mbedtls提供的功能编译生成一对4096位的RSA公私钥。这一步通常涉及调用库中的密钥生成函数,例如使用RSA的key generation API。 2. 利用生成的私钥进行PSS签名。这一步要求应用程序或用户使用私钥对消息进行...

    RSA加解解密加签验签

    亲自总结验证,源码可用,RSA加密、解密、加签、验签,提醒:私钥加签公租验签。其中一对测试的公钥和私钥,密码在资源说明文件中,还包括java生成公私钥的方法,后面会上传C#生成租钥pfx和证书的方法和操作说明。

    rsa-aes-md5-crypt.zip

    综上,"rsa-aes-md5-crypt.zip"这个压缩包可能包含了一个示例或工具,用于演示如何在JavaScript环境中利用jsrsasign库进行RSA公私钥生成、RSA加解密签名验签、AES加解密以及MD5哈希计算。开发者可以通过解压文件并...

    PHP 非对称RSA2加密类

    PHP完整实现RSA加密类 ...8:加解密支持 PKCS1Padding / NOPadding 填充方式,以适应跨平台支持 9:密钥使用 sha512,2048位RSA2标准,信息更安全 /*------ For Example ------ 代码里包函完整DEMO例子 ----*/

    python下读取公私钥做加解密实例详解

    python下读取公私钥做加解密实例详解 在RSA有一种应用模式是公钥加密,私钥解密(另一种是私钥签名,公钥验签)。下面是Python下的应用举例。 假设我有一个公钥文件,rsa_pub.pem, 我要读取这个公钥并用它来加密。 ...

    非对称密钥工具 国际RSA 国密SM

    非对称密钥工具,产生公私钥对,加密,解密,加签,验签等功能。

    智能IC卡及智能密码钥匙密码应用接口数据格式规范

    比如生成随机数(GenRandom)、生成RSA密钥对(GenExtRSAKey、GenRSAKeyPair)、导入RSA密钥对(ImportRSAKeyPair)、RSA签名与验签(RSASignData、RSAVerify)、生成会话密钥(RSAExportSessionKey、...

    openssl创建ca 公私密钥 证书

    5. **生成服务器或客户端的公私钥对**: 为服务器或客户端创建密钥对: ``` openssl genpkey -algorithm RSA -out server.key -pkeyopt rsa_keygen_bits:2048 ``` 6. **创建证书请求**: 填写相关信息并生成...

    支付宝获取公钥和私钥工具

    openssl genpkey -algorithm RSA -out private_key.pem -pkeyopt rsa_keygen_bits:2048 ``` 这将生成一个名为`private_key.pem`的私钥文件。接着,我们需要导出公钥: ``` openssl rsa -pubout -in private_key...

    RSAUtil.java.zip

    - `generateKeyPair(int keySize)`: 生成指定密钥长度的公私钥对。 - `encrypt(byte[] plaintext, PublicKey publicKey)`: 使用公钥加密明文。 - `decrypt(byte[] ciphertext, PrivateKey privateKey)`: 使用私钥...

    手机支付宝制作流程--PHP版本

    因此,需要通过命令行工具OpenSSL生成一对公私钥。 ##### 1. 安装OpenSSL 确保本地环境中已安装OpenSSL工具。如果未安装,可以通过下载官方提供的二进制包(如openssl/bin/openssl.exe)并将其添加到系统路径中...

    电子印章样例

    在C#中,RSACryptoServiceProvider或DSACryptoServiceProvider类可以用来生成和管理公私钥对。 3. 数字签名:数字签名是利用私钥对信息进行加密的过程,它可以验证文档的完整性和发送者的身份。C#中,可以使用...

Global site tag (gtag.js) - Google Analytics