Lembre-se de implementar a autorização de licença uma vez

pacote com.example.demo; 


import com.alibaba.fastjson.JSON;
importar com.google.common.collect.ImmutableMap;

importar javax.crypto.Cipher;
importar java.io.FileInputStream;
importar java.io.FileOutputStream;
importar java.io.ObjectInputStream;
importar java.io.ObjectOutputStream;
importar java.security.Key;
importar java.security.KeyPair;
importar java.security.KeyPairGenerator;
importar java.util.Map;

/ **
* @author yangxj
* @date 2020-04-10 14:17
* /
public class RSADemo {
/ **
* 生成 一 对 公 私) 钥
* * throws Exception
* /
public static void genPairKey () lança Exception {
// Instanciar chave
KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance ("RSA");
// Obter um par de chaves
KeyPair keyPair = keyPairGenerator.generateKeyPair ();
// Obter chave pública key
publicKey = keyPair.getPublic ();
// Particular Key
Key PrivateKey keyPair.getPrivate = ();

// pública arquivo de chave (privada) está escrito
um FileOutputStream publicFos novo new = um FileOutputStream ( "/ Users / EDZ / LICENSEDIR / public.key");
um FileOutputStream privateFos novo novos = a FileOutputStream ( "/ as usuários / edz / licenciado / private.key ");

ObjectOutputStream outputStream = novo ObjectOutputStream (publicFos);

ObjectOutputStream outputStream2 = novo ObjectOutputStream (privateFos);

outputStream.writeObject (publicKey);

outputStream2.writeObject (privateKey);

outputStream2.close ();
outputStream.close ();
}

/ **
* 解析
* @param args
* @throws Exception
* /
public static void main (String [] args) lança a exceção {
Cipher cipher = Cipher.getInstance ("RSA");

//
FileInputStream fis1 = new FileInputStream ("/ Usuários / edz / licenciado / público.key");
FileInputStream fis2 = new FileInputStream ("/ Usuários / edz / licenciado / private.key");

ObjectInputStream objectStream1 = novo ObjectInputStream (fis1);
ObjectInputStream objectStream2 = new ObjectInputStream (fis2);

Chave publicKey = (Key) objectStream1.readObject ();
Key privateKey = (Key) objectStream2.readObject ();

objectStream1.close ();
objectStream2.close ();

// a ser encriptado
Mapa do conteúdo authInfo = ImmutableMap.of ("Authorization", "Someone", "Authorization é válido até", "2019-12-01");

// Criptografar com a chave pública (privada)
cipher.init (Cipher.ENCRYPT_MODE, privateKey );
byte [] encodeResult = cipher.doFinal (JSON.toJSONBytes (authInfo));

// Descriptografar com chave privada (pública)
cipher.init (Cipher.DECRYPT_MODE, publicKey);
byte [] bytes = cipher.doFinal (encodeResult) ;

System.out.println (nova String (bytes));


}
}

Acho que você gosta

Origin www.cnblogs.com/yangxijun/p/12675642.html
Recomendado
Clasificación