• 招生咨询热线:0512-66555771 
  • 手机版
    用手机扫描二维码直达商品手机版
招生咨询热线
0512-66555771
课程导航
NET培训 Java培训 软件工程培训 网络营销培训 电脑培训
更多
更多机构动态
  • 暂无新闻
更多产品分类
更多联系方式
  • 联系人:老师
  • 电话:0512-66555771
站内搜索
 
首页 > 课程列表 > 苏州JAVA培训_怎样进行Java RSA 加解密?
苏州JAVA培训_怎样进行Java RSA 加解密?
 苏州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培训学校

询价单
0条  相关评论

电话咨询

咨询电话:
0512-66555771

QQ客服

微信客服

回到顶部