package com.example.demo;
import com.alibaba.fastjson.JSON;
import com.google.common.collect.ImmutableMap;
import javax.crypto.Cipher;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.security.Key;
import java.security.KeyPair;
import java.security.KeyPairGenerator;
import java.util.Map;
/ **
* @author yangxj
* @date 2020-04-10 14:17
* /
public class RSADemo {
/ **
* 生成 一 对 公 (私) 钥
* @throws Exception
* /
public static void genPairKey () lève Exception {
// Instantiate Key
KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance ("RSA");
// Obtenir une paire de clés
KeyPair keyPair = keyPairGenerator.generateKeyPair ();
// Obtenir la clé publique
Key publicKey = keyPair.getPublic ();
// Obtenir privé Key
Key privateKey keyPair.getPrivate = ();
// publique fichier clé (privé) est écrit
un FileOutputStream publicFos nouveau new = un FileOutputStream ( "/ utilisateurs / EDZ / LICENSEDIR / public.key"),
un privateFos de FileOutputStream nouvelle nouvelle = un FileOutputStream ( « / utilisateurs / edz / licenseir / private.key ");
ObjectOutputStream outputStream = new ObjectOutputStream (publicFos);
ObjectOutputStream outputStream2 = new ObjectOutputStream (privateFos);
outputStream.writeObject (publicKey);
outputStream2.writeObject (privateKey);
outputStream2.close ();
outputStream.close ();
}
/ **
* 解析
* @param args
* @throws Exception
* /
public static void main (String [] args) lève Exception {
Cipher cipher = Cipher.getInstance ("RSA");
// 反 序列 化 获取 公 (私) 钥
FileInputStream fis1 = new FileInputStream ("/ Users / edz / licenseir / public.key");
FileInputStream fis2 = new FileInputStream ("/ Users / edz / licenseir / private.key");
ObjectInputStream objectStream1 = new ObjectInputStream (fis1);
ObjectInputStream objectStream2 = new ObjectInputStream (fis2);
Key publicKey = (Key) objectStream1.readObject ();
Key privateKey = (Key) objectStream2.readObject ();
objectStream1.close ();
objectStream2.close ();
// à chiffrer Content
Map authInfo = ImmutableMap.of ("Authorization", "Someone", "Authorization is valid until", "2019-12-01");
// Crypter avec la clé publique (privée)
cipher.init (Cipher.ENCRYPT_MODE, privateKey );
octet [] encodeResult = cipher.doFinal (JSON.toJSONBytes (authInfo));
// Déchiffrer avec une clé privée (publique)
cipher.init (Cipher.DECRYPT_MODE, publicKey);
octet [] bytes = cipher.doFinal (encodeResult) ;
System.out.println (nouvelle chaîne (octets));
}
}
N'oubliez pas de mettre en œuvre l'autorisation de licence une fois
Je suppose que tu aimes
Origine www.cnblogs.com/yangxijun/p/12675642.html
conseillé
Classement