public class RSAUtil {

//生成秘钥对

public static KeyPair getKeyPair() throws Exception {

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

keyPairGenerator.initialize(1024);

KeyPair keyPair = keyPairGenerator.generateKeyPair();

return keyPair;

}

//获取公钥(Base64编码)

public static String getPublicKey(KeyPair keyPair) {

PublicKey publicKey = keyPair.getPublic();

byte[] bytes = publicKey.getEncoded();

return byte2Base64(bytes);

}

//获取私钥(Base64编码)

public static String getPrivateKey(KeyPair keyPair) {

PrivateKey privateKey = keyPair.getPrivate();

byte[] bytes = privateKey.getEncoded();

return byte2Base64(bytes);

}

//将Base64编码后的公钥转换成PublicKey对象

public static PublicKey string2PublicKey(String pubStr) throws Exception {

byte[] keyBytes = base642Byte(pubStr);

X509EncodedKeySpec keySpec = new X509EncodedKeySpec(keyBytes);

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

PublicKey publicKey = keyFactory.generatePublic(keySpec);

return publicKey;

}

//将Base64编码后的私钥转换成PrivateKey对象

public static PrivateKey string2PrivateKey(String priStr) throws Exception {

byte[] keyBytes = base642Byte(priStr);

PKCS8EncodedKeySpec keySpec = new PKCS8EncodedKeySpec(keyBytes);

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

PrivateKey privateKey = keyFactory.generatePrivate(keySpec);

return privateKey;

}

//公钥加密

public static byte[] publicEncrypt(byte[] content, PublicKey publicKey) throws Exception {

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

cipher.init(Cipher.ENCRYPT_MODE, publicKey);

byte[] bytes = cipher.doFinal(content);

return bytes;

}

//私钥解密

public static byte[] privateDecrypt(byte[] content, PrivateKey privateKey) throws Exception {

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

cipher.init(Cipher.DECRYPT_MODE, privateKey);

byte[] bytes = cipher.doFinal(content);

return bytes;

}

//字节数组转Base64编码

public static String byte2Base64(byte[] bytes) {

BASE64Encoder encoder = new BASE64Encoder();

return encoder.encode(bytes);

}

//Base64编码转字节数组

public static byte[] base642Byte(String base64Key) throws IOException {

BASE64Decoder decoder = new BASE64Decoder();

return decoder.decodeBuffer(base64Key);

}

public static void main(String[] args) {

}

}

如此便可以通过java得到公钥和私钥以方便后面使用。

java rsautil_JAVA 通过RSA获取公钥私钥工具类相关推荐

  1. java rsa 生成公钥私钥_[Java教程]java RSA 生成公钥私钥

    [Java教程]java RSA 生成公钥私钥 0 2016-10-14 17:00:15 /** * 引进的包都是Java自带的jar包 * 秘钥相关包 * base64 编解码 * 这里只用到了编 ...

  2. java外部接口图解_java代码实现访问网络外部接口并获取数据的工具类详解

    java代码实现访问网络外部接口并获取数据的工具类 工具类代码,可以直接copy使用 package com.yqzj.util; import org.apache.log4j.LogManager ...

  3. Java - HuTool 使用 EscapeUtil、XmlUtil等工具类(四)

    Java - HuTool 使用 EscapeUtil.XmlUtil等工具类(四) 本篇主要介绍 HuTool工具, 其是 java工具类,对于一些静态方法进行封装,虽然很小,但很全,里面拥有平时我 ...

  4. Java教程:微信排序并加密工具类

    Java教程:微信排序并加密工具类 源码: import cn.bsit.commons.md5.MD5Utils;import java.util.Arrays; import java.util. ...

  5. java 手机号脱敏,身份证号脱敏 工具类

    java 手机号脱敏,身份证号脱敏 工具类 import org.apache.commons.lang3.StringUtils;/*** * @title: 脱敏工具类* @author: wll ...

  6. android 获取手机信息工具类

    package com.yqy.yqy_listviewheadview;import android.content.Context; import android.telephony.Teleph ...

  7. java将链接生成二维码工具类

    一.添加依赖 <!-- 生成二维码--><dependency><groupId>com.google.zxing</groupId><artif ...

  8. Java生成和解析二维码工具类(简单经典)

    Java生成和解析二维码工具类 开箱即用,简单不废话. pom.xml引入依赖 <!-- https://mvnrepository.com/artifact/com.google.zxing/ ...

  9. JAVA之多sheet页表格生成工具类

    JAVA之多sheet页表格生成工具类 主要方法: import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.h ...

最新文章

  1. LoadRunner解决超时错误
  2. CRM batch product check logic in one order line item
  3. 天涯明月刀开发_《天涯明月刀OL腾讯旗下 北极光工作室的 厄运魔咒:“做什么凉什么”》...
  4. 不是python文件处理seek()方法的参数是_python文件操作seek()偏移量,读取指正到指定位置操作...
  5. java 反射创建对象并赋值_java使用反射创建并操作对象的方法
  6. 初涉Linux(无代码)
  7. 基于python的图像处理的毕业论文_图像处理毕业论文 精品
  8. 微信公号开发之自定义菜单攻略
  9. win10 安装 GPU版TensorFlow
  10. 嵌入式编程中boot和app的s19简易合并方法(使用mfc编程)
  11. 古城罗马、佛洛伦萨、庞贝、比萨一览
  12. 山东省第七届ACM大学生程序设计竞赛 训练总结 [8/12] 待补
  13. linux系统是否支持gpt分区,Linux下对大硬盘进行GPT分区详解
  14. 快手与NBA达成战略合作 将探索版权内容二创变现新模式
  15. 从140元到30元,BM官方电报群与成员轻松互动:EOS没死
  16. 蒲丰投针实验的一些理解
  17. 高通开发系列 - linux kernel内核升级msm-4.9升级至msm-4.19(2)
  18. matlab中data函数,matlab中griddata函数应用示例
  19. 超微服务器如何用u盘装系统,超微主板怎么设置u盘启动,教您超微主板怎么设置u盘启动...
  20. JAVA程序设计:找出最长的超赞子字符串(LeetCode:5485)

热门文章

  1. 详解机器翻译任务中的BLEU
  2. Linux内核---31.按键驱动分析(未完成)
  3. 将heic格式批量转化jpg或png
  4. php 合并pdf文件,php:不使用composer合并pdf?
  5. java long常量池_Java-常量池
  6. VIVO手机聊天打字慢?使用这些方法,2分钟就能打出500字
  7. sleep怎么用java_java怎么用sleep?java中sleep()的用法
  8. 关于盏溢出和 Security_cookie
  9. java线程没wait前调用notify,深入Java线程 之 wait和notify
  10. 衬线字体和无衬线字体是什么_你的字体和意识形态是什么