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生成公私钥对、进行加解密以及实现签名和验签。 1. **生成公私钥对**: - 使用`java.security.KeyPairGenerator`类,通过`getInstance("RSA")`方法获取RSA的...
本资源提供了使用JAVA实现RSA公私钥对生成、数据加解密以及签名验签的源代码,非常适合学习和设计参考。 首先,我们要了解RSA算法的基本原理。RSA是由Ron Rivest、Adi Shamir和Leonard Adleman三位科学家于1977年...
RSA加密解密签名加签验签RsaUtils工具类 RSA算法基于大数因子分解难题,提供了公钥加密和私钥解密的能力。公钥用于加密,私钥则负责解密。这种特性使得RSA成为保证数据传输安全的理想选择。 公钥加密私钥解密与...
RSA加密工具类,公私钥加解密、公私钥验签,读取私钥.ps8方法。
本文将详细讲解RSA算法的加签、加密、解密以及验签的过程,结合Java语言来实现这一系列操作,并涉及到证书的使用。 首先,我们需要理解RSA算法的基本原理。RSA算法基于两个大素数的乘积难以分解这一数学难题,生成...
总结来说,这个“RSA签名验签工具windows_V1.4.zip”提供了一站式的解决方案,涵盖了RSA和RSA2签名生成、验签以及公私钥的创建,对于需要处理这些安全问题的Windows用户来说,是一个非常实用的工具。通过理解和使用...
C# RSA加密、解密、加签、验签、支持JAVA格式公钥私钥、PEM格式公钥私钥、.NET格式公钥私钥 对应文章: http://blog.csdn.net/gzy11/article/details/54573973
1. 使用mbedtls提供的功能编译生成一对4096位的RSA公私钥。这一步通常涉及调用库中的密钥生成函数,例如使用RSA的key generation API。 2. 利用生成的私钥进行PSS签名。这一步要求应用程序或用户使用私钥对消息进行...
亲自总结验证,源码可用,RSA加密、解密、加签、验签,提醒:私钥加签公租验签。其中一对测试的公钥和私钥,密码在资源说明文件中,还包括java生成公私钥的方法,后面会上传C#生成租钥pfx和证书的方法和操作说明。
综上,"rsa-aes-md5-crypt.zip"这个压缩包可能包含了一个示例或工具,用于演示如何在JavaScript环境中利用jsrsasign库进行RSA公私钥生成、RSA加解密签名验签、AES加解密以及MD5哈希计算。开发者可以通过解压文件并...
PHP完整实现RSA加密类 ...8:加解密支持 PKCS1Padding / NOPadding 填充方式,以适应跨平台支持 9:密钥使用 sha512,2048位RSA2标准,信息更安全 /*------ For Example ------ 代码里包函完整DEMO例子 ----*/
python下读取公私钥做加解密实例详解 在RSA有一种应用模式是公钥加密,私钥解密(另一种是私钥签名,公钥验签)。下面是Python下的应用举例。 假设我有一个公钥文件,rsa_pub.pem, 我要读取这个公钥并用它来加密。 ...
非对称密钥工具,产生公私钥对,加密,解密,加签,验签等功能。
比如生成随机数(GenRandom)、生成RSA密钥对(GenExtRSAKey、GenRSAKeyPair)、导入RSA密钥对(ImportRSAKeyPair)、RSA签名与验签(RSASignData、RSAVerify)、生成会话密钥(RSAExportSessionKey、...
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...
- `generateKeyPair(int keySize)`: 生成指定密钥长度的公私钥对。 - `encrypt(byte[] plaintext, PublicKey publicKey)`: 使用公钥加密明文。 - `decrypt(byte[] ciphertext, PrivateKey privateKey)`: 使用私钥...
因此,需要通过命令行工具OpenSSL生成一对公私钥。 ##### 1. 安装OpenSSL 确保本地环境中已安装OpenSSL工具。如果未安装,可以通过下载官方提供的二进制包(如openssl/bin/openssl.exe)并将其添加到系统路径中...
在C#中,RSACryptoServiceProvider或DSACryptoServiceProvider类可以用来生成和管理公私钥对。 3. 数字签名:数字签名是利用私钥对信息进行加密的过程,它可以验证文档的完整性和发送者的身份。C#中,可以使用...