[Java] RSA加密类 →→→→→进入此内容的聊天室

来自 , 2021-04-12, 写在 Java, 查看 160 次.
URL http://www.code666.cn/view/788d9869
  1. package com;
  2.  
  3. import java.security.Key;
  4. import java.security.KeyFactory;
  5. import java.security.KeyPair;
  6. import java.security.KeyPairGenerator;
  7. import java.security.NoSuchAlgorithmException;
  8. import java.security.PrivateKey;
  9. import java.security.PublicKey;
  10. import java.security.interfaces.RSAPrivateKey;
  11. import java.security.interfaces.RSAPublicKey;
  12. import java.security.spec.InvalidKeySpecException;
  13. import java.security.spec.PKCS8EncodedKeySpec;
  14. import java.security.spec.X509EncodedKeySpec;
  15.  
  16. import java.util.HashMap;
  17. import java.util.Map;
  18.  
  19. import javax.crypto.Cipher;
  20.  
  21. public class RSACoder {
  22.         //算法
  23.         public static String Key_ALGORITHM="RSA";
  24.         //私钥
  25.         public static String Private_Key="RSAPrivateKey";
  26.         //公钥
  27.         public static String Public_Key="RSAPublicKey";
  28.         //密钥长度
  29.         public static int Key_Size=512;
  30.         public static Map<String,Object> initKey() throws Exception{
  31.                 //实例化密钥生成器
  32.                 KeyPairGenerator keypairgenerator=KeyPairGenerator.getInstance(Key_ALGORITHM);
  33.                 //初始化
  34.                 keypairgenerator.initialize(Key_Size);
  35.                 //获得密钥对
  36.                 KeyPair keypair=keypairgenerator.generateKeyPair();
  37.                 //密钥
  38.                 RSAPrivateKey pritekey=(RSAPrivateKey)keypair.getPrivate();
  39.                 //公钥
  40.                 RSAPublicKey pubkey=(RSAPublicKey)keypair.getPublic();
  41.                 Map<String,Object> keymap=new HashMap<String,Object>(2);
  42.                 keymap.put(Private_Key, pritekey);
  43.                 keymap.put(Public_Key, pubkey);
  44.                 return keymap; 
  45.         }
  46.         //获得密钥
  47.         public static byte[] getPrivateKey(Map<String,Object>keymap){
  48.         Key pritekey=(Key)keymap.get(Private_Key);
  49.         return pritekey.getEncoded();
  50.         }
  51.         //获得公钥
  52.         public static byte[] getPublicKey(Map<String,Object>keymap){
  53.                  Key pubkey=(Key)keymap.get(Public_Key);
  54.                  return pubkey.getEncoded();
  55.         }
  56.         //私钥加密
  57.         public static byte[] encryptByPrivateKey(byte[] key,byte[] data) throws Exception{
  58.                 //实例化密钥材料
  59.                 PKCS8EncodedKeySpec pcs8spec=new PKCS8EncodedKeySpec(key);
  60.                 //实例化密钥工厂
  61.                 KeyFactory keyfactory=KeyFactory.getInstance(Key_ALGORITHM);
  62.                 //生成私钥
  63.                 PrivateKey pritekey=keyfactory.generatePrivate(pcs8spec);
  64.                 //私钥加密
  65.                 Cipher cipher=Cipher.getInstance(pritekey.getAlgorithm());
  66.                 cipher.init(Cipher.ENCRYPT_MODE,pritekey);
  67.                 return cipher.doFinal(data);
  68.         }
  69.         //公钥解密
  70.         public static byte[] decryptByPublicKey(byte[] key,byte[] data) throws Exception{
  71.                 //实例化公钥材料
  72.                 X509EncodedKeySpec x509spec=new X509EncodedKeySpec(key);
  73.                 //实例化密钥工厂
  74.                 KeyFactory keyfactory=KeyFactory.getInstance(Key_ALGORITHM);
  75.                 //获得公钥
  76.                 PublicKey pubkey=keyfactory.generatePublic(x509spec);
  77.                 //对数据进行解密
  78.                 Cipher cipher=Cipher.getInstance(Key_ALGORITHM);
  79.                 cipher.init(Cipher.DECRYPT_MODE, pubkey);
  80.                 return cipher.doFinal(data);
  81.         }
  82.        
  83.  
  84. }
  85.  

回复 "RSA加密类"

这儿你可以回复上面这条便签

captcha