非对称加密--RSA
来源:互联网 发布:js自动触发function 编辑:程序博客网 时间:2024/05/17 12:53
1、非对称加密--RSA
package com.lijy.RSA;import org.apache.commons.codec.binary.Base64;import javax.crypto.Cipher;import java.security.KeyFactory;import java.security.KeyPair;import java.security.KeyPairGenerator;import java.security.PrivateKey;import java.security.PublicKey;import java.security.interfaces.RSAPrivateKey;import java.security.interfaces.RSAPublicKey;import java.security.spec.PKCS8EncodedKeySpec;import java.security.spec.X509EncodedKeySpec;/** * @author Lijingyu on 2017/9/13. */public class ImoocRSA { private static String src = "待加密字符串"; public static void main(String[] args) { jdkRSA(); } public static void jdkRSA(){ try { //1、初始化密钥 KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance("RSA"); keyPairGenerator.initialize(512); KeyPair keyPair = keyPairGenerator.generateKeyPair(); RSAPublicKey rsaPublicKey = (RSAPublicKey) keyPair.getPublic(); RSAPrivateKey rsaPrivateKey = (RSAPrivateKey) keyPair.getPrivate(); System.out.println("Public key:" + Base64.encodeBase64String(rsaPublicKey.getEncoded())); System.out.println("Private key:" + Base64.encodeBase64String(rsaPrivateKey.getEncoded())); //私钥加密、公钥解密==加密 PKCS8EncodedKeySpec pkcs8EncodedKeySpec = new PKCS8EncodedKeySpec(rsaPrivateKey.getEncoded()); KeyFactory keyFactory = KeyFactory.getInstance("RSA"); PrivateKey privateKey = keyFactory.generatePrivate(pkcs8EncodedKeySpec); Cipher cipher = Cipher.getInstance("RSA"); cipher.init(Cipher.ENCRYPT_MODE, privateKey); byte[] result = cipher.doFinal(src.getBytes()); System.out.print("私钥加密、公钥解密:" + Base64.encodeBase64String(result)); //3、私钥加密、公钥解密--解密 X509EncodedKeySpec x509EncodedKeySpec = new X509EncodedKeySpec(rsaPublicKey.getEncoded()); keyFactory = KeyFactory.getInstance("RSA"); PublicKey publicKey = keyFactory.generatePublic(x509EncodedKeySpec); cipher = Cipher.getInstance("RSA"); cipher.init(Cipher.DECRYPT_MODE, publicKey); result = cipher.doFinal(result); System.out.println("私钥加密、公钥解密:" + new String(result)); //4、公钥加密、私钥解密--加密 x509EncodedKeySpec = new X509EncodedKeySpec(rsaPublicKey.getEncoded()); keyFactory = KeyFactory.getInstance("RSA"); publicKey = keyFactory.generatePublic(x509EncodedKeySpec); cipher = Cipher.getInstance("RSA"); cipher.init(Cipher.ENCRYPT_MODE, publicKey); result = cipher.doFinal(src.getBytes()); System.out.print("公钥加密、私钥解密:" + Base64.encodeBase64String(result)); //5、公钥加密、私钥解密==解密 pkcs8EncodedKeySpec = new PKCS8EncodedKeySpec(rsaPrivateKey.getEncoded()); keyFactory = KeyFactory.getInstance("RSA"); privateKey = keyFactory.generatePrivate(pkcs8EncodedKeySpec); cipher = Cipher.getInstance("RSA"); cipher.init(Cipher.DECRYPT_MODE, privateKey); result = cipher.doFinal(result); System.out.print("公钥加密、私钥解密:" + new String(result)); } catch (Exception e) { e.printStackTrace(); } }}
2、私钥加密、公钥解密
发送者:1、使用私钥加密数据 2、发送加密数据给接收者
接收者:3、使用公钥解密数据
3、公钥加密、私钥解密
发送者:1、使用公钥加密数据 2、发送加密数据给接收方
接收者:3、使用私钥解密数据
4、生成密钥长度为2048位的公钥和私钥
import com.sun.org.apache.xerces.internal.impl.dv.util.Base64;import sun.misc.BASE64Encoder;import javax.crypto.Cipher;import java.security.KeyFactory;import java.security.KeyPair;import java.security.KeyPairGenerator;import java.security.PrivateKey;import java.security.PublicKey;import java.security.interfaces.RSAPrivateKey;import java.security.interfaces.RSAPublicKey;import java.security.spec.PKCS8EncodedKeySpec;import java.security.spec.X509EncodedKeySpec;public class RSATest { public static String src = "RSA 加密字符串"; public static void main(String[] args) { jdkRSA(); } public static void jdkRSA() { try { //1.初始化密钥 KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance("RSA"); keyPairGenerator.initialize(2048);//密钥长度 KeyPair keyPair = keyPairGenerator.generateKeyPair();//初始化密钥对 RSAPublicKey rsaPublicKey = (RSAPublicKey) keyPair.getPublic();//公钥 RSAPrivateKey rsaPrivateKey = (RSAPrivateKey) keyPair.getPrivate();//私钥 System.out.println("公钥" + new String(new BASE64Encoder().encodeBuffer(rsaPublicKey.getEncoded()))); System.out.println("私钥" + new String(new BASE64Encoder().encodeBuffer(rsaPrivateKey.getEncoded()))); //2.私钥加密,公钥解密----加密 生成私钥 PKCS8EncodedKeySpec pkcs8EncodedKeySpec = new PKCS8EncodedKeySpec(rsaPrivateKey.getEncoded()); KeyFactory keyFactory = KeyFactory.getInstance("RSA"); PrivateKey privateKey = keyFactory.generatePrivate(pkcs8EncodedKeySpec); //Cipher类为加密和解密提供密码功能,通过getinstance实例化对象 Cipher cipher = Cipher.getInstance("RSA"); //初始化加密 cipher.init(Cipher.ENCRYPT_MODE, privateKey); byte[] result = cipher.doFinal(src.getBytes()); System.out.println("私钥加密,公钥解密----加密:" + Base64.encode(result)); //3.私钥加密,公钥解密----解密 //生成公钥 X509EncodedKeySpec x509EncodedKeySpec = new X509EncodedKeySpec(rsaPublicKey.getEncoded()); keyFactory = KeyFactory.getInstance("RSA"); PublicKey publicKey = keyFactory.generatePublic(x509EncodedKeySpec); cipher = Cipher.getInstance("RSA"); //初始化解密 cipher.init(Cipher.DECRYPT_MODE, publicKey); result = cipher.doFinal(result); System.out.println("私钥加密,公钥解密----解密:" + new String(result)); } catch (Exception e) { e.printStackTrace(); } }}
阅读全文
0 0
- RSA 非对称加密
- RSA非对称加密
- RSA非对称加密
- RSA非对称加密
- RSA 非对称加密
- rsa非对称加密
- RSA非对称加密
- 非对称加密RSA
- RSA非对称加密
- 非对称加密 rsa
- Rsa非对称加密
- RSA非对称加密
- RSA非对称加密
- 非对称加密RSA
- 非对称加密--RSA
- 非对称加密------RSA
- 使用非对称RSA加密
- asp rsa 非对称加密
- Unity编程软件介绍
- shell 获取一个文件的文件名和后缀名
- 昂贵的婚礼
- eclipse插件开发初体验-eclipse启动耗时统计插件
- 为浪潮A840r-G服务器按照操作系统
- 非对称加密--RSA
- XJOI32爆炸记
- bzoj1858 [Scoi2010]序列操作
- 3.python从尾到头打印链表
- linux、ubuntu下使用python3下载优酷视频
- linux命令_系统管理_ userdel
- PHP array_multisort实现二维数组排序
- 学习记录
- 第二周项目一之程序的多文件组织