标签:algo rac img 字符 exce 生成 copy viewer inf
非对称加密已经被评为加密标准,主要包含(公钥加密私钥解密,或者私钥加密公钥解密)本文主要讲解的是如何用java生成 公钥和私钥并且 进行字符串加密 和字符串解密
//如需要代码copy如下
import java.security.KeyPair;
import java.security.KeyPairGenerator;
import java.security.NoSuchAlgorithmException;
import java.security.PrivateKey;
import java.security.PublicKey;
import java.util.HashMap;
import java.util.Map;
import javax.crypto.Cipher;
import javax.crypto.NoSuchPaddingException;
import sun.applet.resources.MsgAppletViewer;
import sun.misc.BASE64Decoder;
import sun.misc.BASE64Encoder;
public class KeyRSA1 {
//密钥对生成器
private KeyPairGenerator keyPairGenerator;
//密钥对 里面包含(公钥he 私钥)
private KeyPair keyPair;
//公钥对象
private PublicKey publicKey;
//私钥对象
private PrivateKey privateKey;
//加密解密通用类型
private String keyType = "RSA";
/*** 构造函数
* @param keySize 密钥长度取值范围(512-16384)建议1024或者2048 别整太长降低性能
* @throws Exception*/
public KeyRSA1(int keySize) throws Exception {
// 1创建 keypairGengerator密钥生成器对象
keyPairGenerator = KeyPairGenerator.getInstance(keyType);
// 2指定密钥生成器的长度
keyPairGenerator.initialize(keySize);
// 3创建 keypair 根据密钥生成器获取密钥对 里面包含(公钥和私钥)
keyPair = keyPairGenerator.genKeyPair();
// 4 根据密钥对 创建 公钥
publicKey = keyPair.getPublic();
// 5 根据密钥对 创建 私钥
privateKey = keyPair.getPrivate();
}
// 使用公??加密
public String encrypt(String str) throws Exception {
//创建密钥类 keyType 为rsa
Cipher cipher = Cipher.getInstance(keyType);
// 指定密钥类是 加密 注意 CIPHER类ENCRYPT_MODE常量是 加密 publicKey公钥
cipher.init(Cipher.ENCRYPT_MODE, publicKey);
//进行公钥加密处理
byte[] bytes = cipher.doFinal(str.getBytes());
BASE64Encoder encoder=new BASE64Encoder();
//返回base64 编码加密之后的字符串
return encoder.encode(bytes);
}
// 使用私??解密
public String decrypt(String str) throws Exception {
//创建密钥类 keyType 为rsa
Cipher cipher = Cipher.getInstance(keyType);
//指定密钥是解密类型的 Cipher DECRYPT_MODE 解密privateKey私钥
cipher.init(Cipher.DECRYPT_MODE, privateKey);
BASE64Decoder decoder=new BASE64Decoder();
//进行base64解密
byte[] bytes1=decoder.decodeBuffer(str);
//私钥解密
byte[] bytes = cipher.doFinal(bytes1);
//得到结果是字节数组 把字节数组编程字符串返回解密后的字符串
return new String(bytes);
}
}
//测试类代码copy如下
public static void main(String[] args) {
try {
KeyRSA1 key = new KeyRSA1(1024);
String str = "数据加密内容";
System.out.println("要加密的内容是===" + str);
String encryptResult = key.encrypt(str);
System.out.println("加密后的秘文是===" + encryptResult);
String decryptResult = key.decrypt(encryptResult);
System.out.println("解密后的数据是===" + decryptResult);
} catch (Exception e) {
e.printStackTrace();
}
}
java编写非对称加密,解密,公钥加密,私钥解密,RSA,rsa
标签:algo rac img 字符 exce 生成 copy viewer inf
原文地址:https://www.cnblogs.com/langjunnan/p/8902288.html