下面的代码段向您展示了如何使用JDK Security API生成公共和私有密钥。私钥可用于对文档签名,而公钥可用于验证文档签名有效。

java.security软件包中提供了用于生成密钥对的API 。这意味着我们必须将此包导入到我们的代码中。生成密钥对的类是KeyPairGenerator。要获得此类的实例,我们必须getInstance()通过提供两个参数来调用方法。第一个参数是算法,第二个参数是提供者。

获取密钥生成器的实例后,我们必须对其进行初始化。该initialize()方法采用两个参数,密钥大小和随机性来源。我们将密钥大小设置为,1024并传递和的实例SecureRandom。

最后,为了生成密钥对,我们调用类的generateKeyPair()方法KeyPairGenerator。这将通过调用and方法KeyPair从可以获取PrivateKeyandPublicKey的位置返回一个对象。getPrivate()getPublic()

让我们看看下面的代码片段:package org.nhooo.example.security;

import java.security.*;

import java.util.Base64;

public class GenerateKeyPairDemo {

public static void main(String[] args) {

try {

KeyPairGenerator keyGen = KeyPairGenerator.getInstance("DSA", "SUN");

// 初始化KeyPairGenerator。

SecureRandom random = SecureRandom.getInstance("SHA1PRNG", "SUN");

keyGen.initialize(1024, random);

// 生成密钥对,私钥和公钥。

KeyPair keyPair = keyGen.generateKeyPair();

PrivateKey privateKey = keyPair.getPrivate();

PublicKey publicKey = keyPair.getPublic();

Base64.Encoder encoder = Base64.getEncoder();

System.out.println("privateKey: " + encoder.encodeToString(privateKey.getEncoded()));

System.out.println("publicKey: " + encoder.encodeToString(publicKey.getEncoded()));

} catch (NoSuchAlgorithmException e) {

e.printStackTrace();

} catch (NoSuchProviderException e) {

e.printStackTrace();

}

}

}

java m e 获取公钥_Java如何生成公钥和私钥?相关推荐

  1. java privatekey输出字符串_[Java教程]根据字符串(String)生成公钥(PublicKey)和私钥(PrivateKey)对象_星空网...

    根据字符串(String)生成公钥(PublicKey)和私钥(PrivateKey)对象 2012-05-29 0 1.字符串生成公钥对象 PublicKey /** * 实例化公钥 * * @re ...

  2. java 根据日期获取天数_java获取日期之间天数的方法

    //获取两个日期之间的天数 private int daysBetween(Date now, Date returnDate) { Calendar cNow = Calendar.getInsta ...

  3. java 前端页面调用数据库_java如何生成json被前端调用

    小妹前端一枚,CSDN新人,分不多,请见谅. 现在在自学前后台交互. 现在采用的是ajax调用的方法,json文件是自己写的假数据. $.ajax({ url:"json/mood.json ...

  4. java设置pdf不可编辑_Java动态生成pdf文件(使用itext编辑pdf)

    一.创建pdf模板 使用PDFelement制作pdf模板(数据域的名称对应后面插入的key) 二.导入maven依赖 com.itextpdf itextpdf 5.5.13 com.itextpd ...

  5. java 判断是否为男女_java:生成中文姓名(区分男女)

    需求 因为某些特殊原因需要生成一些订单数据.所以需要生成随机的姓名. 实现思路 将姓氏.男生名常见字.女生名常见字分别保存在字典中,key为从1开始的连续的整数,value为姓或单字.将字典中的数据缓 ...

  6. java行程单解析获取内容_java如何抓取网页上的动态信息,获取源代码后如何分析JS?...

    首先明确我指的动态数据是什么. 名词定义:动态数据在这里指的是网页中由Javascript动态生成的页面内容,即网页源文件中没有,在页面加载到浏览器后动态生成的. 下面进入正题. 抓取静态页面很简单, ...

  7. java根据属性获取对象_java反射工具类--通过指定属性名,获取/设置对象属性值

    java对象通过点运算符操作对象属性的方式没法使用for,while等循环,此工具主要解决这一问题. 例如:有一对象包含属性有一定规律 obj1: { name1: "张三", a ...

  8. java 遍历map获取下标_java 遍历Map并且获取其中的键值

    import java.util.Collection; import java.util.HashMap; import java.util.Iterator; import java.util.M ...

  9. java类中获取全局变量_java 通过反射获取类的全局变量、方法、构造方法

    package com.str; public class ZiFuChuan { public static String ss = "全局变量!!!!!!"; String s ...

  10. java资源文件获取属性_Java读写资源文件类Properties

    Java中读写资源文件最重要的类是Properties 1) 资源文件要求如下: 1.properties文件是一个文本文件 2.properties文件的语法有两种,一种是注释,一种属性配置. 注  ...

最新文章

  1. 2021-2027全球与中国经颅磁刺激仪(TMS)市场现状及未来发展趋势
  2. 功能强大的 C++ redis 客户端库增加至 acl 项目中
  3. 用户界面设计风格说明
  4. 交换机的端口工作模式
  5. unity片元着色器中获取屏幕坐标_Unity踩坑笔记(持续更新)
  6. wolive-在线客服系统源码_如何搭建在线客服系统?
  7. ios 之 autoresizing小解
  8. APP技巧:推荐6款超级实用的APP软件,赶快下载试试吧!
  9. 今天聊:做好前端的 10 个习惯
  10. 【结构型】Bridge模式
  11. 函数式编程与命令式编程的学习难度比较
  12. 【一分钟论文】Deep Biaffine Attention for Neural Dependency Parsing
  13. (转载)计算机英语名词简释
  14. SPSS可信度数据分析
  15. 把照片转换成pdf的格式
  16. vue导航使用及页面布局样例
  17. 一家计算机专卖店A型计算器,A型计算器谱子 | 手游网游页游攻略大全
  18. 移动物联网怎么激活?开户流程是怎么样的
  19. bandgap电路设计与仿真
  20. python获取每日支付宝与银行卡账单

热门文章

  1. c语言中字母后面的 是什么意思,C语言中括号里面一个字母是什么意思
  2. aspose.word在某个字后面自动换行_服务应用突然宕机了?别怕,Dubbo 帮你自动搞定服务隔离!...
  3. java一元稀多项式_数据结构之线性表- 一元稀疏多项式计算器
  4. huffman树_Java使用哈夫曼树实现文件压缩的原理及实现
  5. python暂停和恢复_Scrapy如何暂停/恢复工作?
  6. 谷歌浏览器:解决Chrome加载扩展程序提示程序包无效:
  7. php前段时间戳转字符串,JavaScript_js获取时间并实现字符串和时间戳之间的转换,废话少说,直接上代码 复制 - phpStudy...
  8. Java实现的FTP协议断点续传功能(上传/下载)通用类
  9. SLAM_SLAM问题求解框架
  10. python_文件读写_提取kitti数据集中带时间戳的IMU测量数据