欢迎来到天天培训网!全国[切换城市] 登录 注册
首页 发布课程 机构平台 手机浏览

手机扫一扫

咨询热线

400-0808-102

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

  • 联 系 人:老师(先生) 
  • 咨询热线:0512-66555771
  • 授课学校:苏州北大青鸟教育
  • 授课地址:苏州市姑苏区养育巷49号2楼
课程推荐

苏州NET培训_.net学士

面议

苏州软件工程培训_学

面议

苏州电脑培训_北大青

面议

苏州电脑培训_北大青

面议

苏州电脑培训_北大青

面议

苏州软件工程培训_学

面议

机构信息

所在地区:江苏 苏州市

会员级别:VIP会员10

身份认证:      

已  缴 纳:0.00 元保证金

我的勋章:  通过认证 [诚信档案]

在线客服:

机构名片

苏州北大青鸟教育

微信客服
【温馨提示】来电请说明在天天培训网看到我们的,谢谢
课程详情
 苏州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.PKCS8EncodedKeySpec;

  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);

  PKCS8EncodedKeySpec keySpec = new PKCS8EncodedKeySpec(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/PKCS1Padding");

  //明文

  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);

咨询电话:0512-66555771         QQ1294015820

更多课程点击:https://www.ttpx.net/index.php?homepage=szbdqnzzq

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

苏州JAVA培训|苏州JAVA培训班|苏州JAVA培训学校

免责声明

本网页所展示的有关【苏州JAVA培训_怎样进行Java RSA 加解密?】的信息/图片/参数等由的会员【苏州北大青鸟教育 】提供,由天天培训网会员【苏州北大青鸟教育 】自行对信息/图片/参数等的真实性、准确性和合法性负责,本平台(本网站)仅提供展示服务,请谨慎交易,因交易而产生的法律关系及法律纠纷由您自行协商解决,本平台(本网站)对此不承担任何责任。您在本网页可以浏览【苏州JAVA培训_怎样进行Java RSA 加解密?】有关的信息/图片/价格等及提供 【苏州JAVA培训_怎样进行Java RSA 加解密?】的商家公司简介、联系方式等信息。

在您的合法权益受到侵害时,请您致电400-0808-102,我们将竭诚为您服务,感谢您对天天培训网的关注与支持!