非对称加密
非对称加密有一对密钥,公钥和私钥。可以用公钥加密,也可以用私钥加密。不过,公钥加密必须用私钥解密,私钥加密必须用公钥解密。如果不对应,则会报这样的异常
javax.crypto.BadPaddingException: Data must start with zero
代码如下:
- import java.security.KeyPair;
- import java.security.KeyPairGenerator;
- import javax.crypto.Cipher;
- publicclass test1 {
- //公钥加密
- publicbyte[] PublicEncrypt(KeyPair key,String str)throws Exception {
- Cipher cipher = Cipher.getInstance("RSA/ECB/PKCS1Padding");
- cipher.init(Cipher.ENCRYPT_MODE, key.getPublic());
- return cipher.doFinal(str.getBytes("UTF8"));
- }
- //公钥解密
- publicbyte[] PublicDECRYPT (KeyPair key,byte[] data)throws Exception {
- Cipher cipher = Cipher.getInstance("RSA/ECB/PKCS1Padding");
- cipher.init(Cipher.DECRYPT_MODE, key.getPublic());
- return cipher.doFinal(data);
- }
- //私钥加密
- publicbyte[] PrivateEncrypt (KeyPair key,String str)throws Exception {
- Cipher cipher = Cipher.getInstance("RSA/ECB/PKCS1Padding");
- cipher.init(Cipher.ENCRYPT_MODE, key.getPrivate());
- return cipher.doFinal(str.getBytes("UTF8"));
- }
- //私钥解密
- publicbyte[] PrivateDECRYPT(KeyPair key,byte[] data)throws Exception {
- Cipher cipher = Cipher.getInstance("RSA/ECB/PKCS1Padding");
- cipher.init(Cipher.DECRYPT_MODE, key.getPrivate());
- return cipher.doFinal(data);
- }
- publicstaticvoid main(String args[]) throws Exception {
- String str = "Hello World!";
- KeyPairGenerator keyGen = KeyPairGenerator.getInstance("RSA");
- keyGen.initialize(1024);
- KeyPair key = keyGen.generateKeyPair();
- test1 t = new test1();
- System.out.println("加密前原文:"+str);
- byte[] data = t.PublicEncrypt(key,str);
- System.out.println("私钥解密后:"+new String(t.PrivateDECRYPT(key,data)));
- byte[] data1 = t.PrivateEncrypt(key,str);
- System.out.println("公钥解密后:"+new String(t.PublicDECRYPT(key,data1)));
- }
- }
相关推荐
登录时,用户的密码用明文传输...非对称加密算法常用RSA算法,秘钥使用base64编码成字符串,后端使用jdk8的标准API,前端使用jsencrypt.js进行RSA的对应操作。经过测试,本例中的前后端代码的加密解密计算结果是一致的。
非对称加密JAVA实现,实现对超长内容进行加密
非对称加密算法流程图,使用visio绘制。
主要介绍RSA非对称加密算法的由来和应用场景,以及加密原理
对称加密:DES、3DES、DESX、Blowfish、IDEA、RC4、RC5、RC6和AES 非对称加密:RSA、ECC(移动设备用)、Diffie-Hellman、El Gamal、DSA(数字签名用)
java关于加密的算法demo代码(Base64加密\数字签名\对称加密算法\非对称加密算法\消息摘要算法) JAVA安全实现三种方式: 1.JDK 2.Commons Codec 3.Bouncy Castle 一。非对称加密算法: 1.DH 2.RSA 3.ELGamal 二。...
非对称加密技术研究 一篇关于非对称加密技术的介绍,详细!
6.用对方的公钥对称密钥进行加密(加密密钥) 7.将密文(5)和加密密钥(6)一起发给对方 接收方: 1.用自己的私钥对加密密钥进行解密,得到对称密钥--也只有自己才能解密。 2.用对称密钥对密文进行解密,得到...
C# RSA非对称加密 实现私钥加密 公钥解密;可以用于生成授权码。 RSA生成一下随机值,然后都是用BigInteger类字符串跟字节数组互转
本工具是用于golang编写的,用于rsa非对称加密技术实现的对字符串的加密解密工具,可以对文件进行加密解密(txt、docx、xls文档等)。对文档加密会对文档同目录下生成一个后缀名加.hh的文档。 操作说明: 一、对字符...
GNUPG 使用详解 非对称加密工具 非对称加密工具GNUPG及使用详解
js版md5非对称加密算法js版md5非对称加密算法js版md5非对称加密算法js版md5非对称加密算法js版md5非对称加密算法
C# 非对称 加密 密钥生成 文件加密 文件解密
对称加密 非对称加密 需要的jar包
非对称加密。
Java非对称加密源码实例。 Java非对称加密源码实例.zip
go语言封装的各种对称加密和非对称加密,可以直接使用,包括3重DES,AES的CBC和CTR模式,还有RSA非对称加密
java编写的加密解密工具,有对称加密和非对称加密
这是本人总结的Java 非对称 加密 算法,有疑问可以找我1038546502@qq.com
非对称加密java,让你更加明白私钥、公钥