苏州JAVA培训_怎样进行Java RSA 加解密?

授课机构:苏州北大青鸟培训学校 上课地点:苏州市姑苏区养育巷49号2楼

  • 咨询电话:0512-66555771
课程详情

苏州JAVA培训就到苏州北大青鸟来学习!

苏州北大青鸟是是中国地区首批北大青鸟APTECH品牌教育培训的专业计算机职业培训,主要开设:电脑培训|软件工程师培训|JAVA培训|.NET培训|网络营销培训等相关课程。

怎样进行Java RSA 加解密?

  import java.security.Key;

  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.CS8EncodedKeySpec;

  import java.security.spec.X509EncodedKeySpec;

  import javax.crypto.Cipher;

  import sun.misc.BASE64Decoder;

  import sun.misc.BASE64Encoder;

  public class RSAHelper

  /**

  * 得到公钥

  * @param key 密钥字符串(经过base64编码)

  * @throws Exception

  */

  public static PublicKey getPublicKey(String key) throws Exception {

  byte[] keyBytes;

  keyBytes = (new BASE64Decoder()).decodeBuffer(key);

  X509EncodedKeySpec keySpec = new X509EncodedKeySpec(keyBytes);

  KeyFactory keyFactory = KeyFactory.getInstance("RSA");

  PublicKey publicKey = keyFactory.generatePublic(keySpec);

  return publicKey;

  }

  /**

  * 得到私钥

  * @param key 密钥字符串(经过base64编码)

  * @throws Exception

  */

  public static PrivateKey getPrivateKey(String key) throws Exception {

  byte[] keyBytes;

  keyBytes = (new BASE64Decoder()).decodeBuffer(key);

  CS8EncodedKeySpec keySpec = new CS8EncodedKeySpec(keyBytes);

  KeyFactory keyFactory = KeyFactory.getInstance("RSA");

  PrivateKey privateKey = keyFactory.generatePrivate(keySpec);

  return privateKey;

  }

  /**

  * 得到密钥字符串(经过base64编码)

  * @return

  */

  public static String getKeyString(Key key) throws Exception {

  byte[] keyBytes = key.getEncoded();

  String s = (new BASE64Encoder()).encode(keyBytes);

  return s;

  }

  public static void main(String[] args) throws Exception {

  KeyPairGenerator keyPairGen = KeyPairGenerator.getInstance("RSA");

  //密钥位数

  keyPairGen.initialize(1024);

  //密钥对

  KeyPair keyPair = keyPairGen.generateKeyPair();

  // 公钥

  PublicKey publicKey = (RSAPublicKey) keyPair.getPublic();

  // 私钥

  PrivateKey privateKey = (RSAPrivateKey) keyPair.getPrivate();

  String publicKeyString = getKeyString(publicKey);

  System.out.println("public:n" + publicKeyString);

  String privateKeyString = getKeyString(privateKey);

  System.out.println("private:n" + privateKeyString);

  //加解密类

  Cipher cipher = Cipher.getInstance("RSA");//Cipher.getInstance("RSA/ECB/CS1Padding");

  //明文

  byte[] plainText = "我们都很好!邮件:@sina.com".getBytes();

  //加密

  cipher.init(Cipher.ENCRYPT_MODE, publicKey);

  byte[] enBytes = cipher.doFinal(plainText);

  //通过密钥字符串得到密钥

  publicKey = getPublicKey(publicKeyString);

  privateKey = getPrivateKey(privateKeyString);

  //解密

  cipher.init(Cipher.DECRYPT_MODE, privateKey);

  byte[]deBytes = cipher.doFinal(enBytes);

  publicKeyString = getKeyString(publicKey);

  System.out.println("public:n" +publicKeyString);

  privateKeyString = getKeyString(privateKey);

  System.out.println("private:n" + privateKeyString);

  String s = new String(deBytes);

  System.out.println(s);

  }

  通过modulus public exponent private exponent生成 RSA Key

  import java.math.BigInteger;

  import java.security.KeyFactory;

  import java.security.PrivateKey;

  import java.security.PublicKey;

  import java.security.spec.RSAPrivateKeySpec;

  import java.security.spec.RSAPublicKeySpec;

  import javax.crypto.Cipher;

  public class RsaKey {

  public PublicKey getPublicKey(String modulus,String publicExponent) throws Exception {

  BigInteger m = new BigInteger(modulus);

  BigInteger e = new BigInteger(publicExponent);

  RSAPublicKeySpec keySpec = new RSAPublicKeySpec(m,e);

  KeyFactory keyFactory = KeyFactory.getInstance("RSA");

  PublicKey publicKey = keyFactory.generatePublic(keySpec);

  return publicKey;

  }

  public PrivateKey getPrivateKey(String modulus,String privateExponent) throws Exception {

  BigInteger m = new BigInteger(modulus);

  BigInteger e = new BigInteger(privateExponent);

  RSAPrivateKeySpec keySpec = new RSAPrivateKeySpec(m,e);

  KeyFactory keyFactory = KeyFactory.getInstance("RSA");

  PrivateKey privateKey = keyFactory.generatePrivate(keySpec);

  return privateKey;

  }

  public static void main(String[] args) throws Exception {

  String modulus = "10103166745709600780215616551837697832816413714471062522342538060943596036859967333870827790358555455232243383580565187280643159050869924436081447583051139";

  String publicExponent = "65537";

  String privateExponet = "367979294475011322800474185715497882523349856362702385535371444397399388741997039894583483410120364529325888461124714276674612930833020362278754665756193";

  RsaKey key = new RsaKey();

  PublicKey publicKey = key.getPublicKey(modulus, publicExponent);

  PrivateKey privateKey = key.getPrivateKey(modulus, privateExponet);

  //加解密类

  Cipher cipher = Cipher.getInstance("RSA");

  //明文

  byte[] plainText = "我们都很好!邮件:@sina.com".getBytes();

  //加密

  cipher.init(Cipher.ENCRYPT_MODE, publicKey);

  byte[] enBytes = cipher.doFinal(plainText);

  cipher.init(Cipher.DECRYPT_MODE, privateKey);

  byte[]deBytes = cipher.doFinal(enBytes);

  String s = new String(deBytes);

  System.out.println(s);

  }

咨询电话:  联系QQ

更多请点击进入:http://suzhou.pxto.com.cn/JiGou/6a907226ce32f2db.html

学校地址:苏州市姑苏区养育巷492

苏州JAVA培训|苏州JAVA培训学校|苏州JAVA培训中心

本页面由主体自行上传,本网不对该页面内容(包括但不限于文字、图片)真实性和知识产权负责,如有侵权请联系处理删除qq:16720809。
看过该课程的人还看了
汇上优课
微信选课
好课0元领
分享立返现!
苏州北大青鸟培训学校苏州市姑苏区养育巷49号2楼
【机构】咨询热线: 0512-66555771
温馨提示: 提交留言后老师会第一时间与您联系! 热线电话:0512-66555771