Java提供了一个名称为KeyGenerator的类,该类用于生成密钥,此类的对象是可重用的。

要使用KeyGenerator类生成密钥,请按照以下步骤操作。

第1步:创建KeyGenerator对象

KeyGenerator类提供getInstance()方法,该方法接受表示所需密钥生成算法的String变量,并返回生成密钥的KeyGenerator对象。

使用getInstance()方法创建KeyGenerator对象,如下所示。

//Creating a KeyGenerator object KeyGenerator keyGen = KeyGenerator.getInstance("DES");

第2步:创建SecureRandom对象

java.Security包的SecureRandom类提供了一个强大的随机数生成器,用于在Java中生成随机数。 实例化此类,如下所示。

//Creating a SecureRandom object SecureRandom secRandom = new SecureRandom();

第3步:初始化KeyGenerator

KeyGenerator类提供了一个名为init()的方法,此方法接受SecureRandom对象并初始化当前的KeyGenerator。

使用init()方法初始化在上一步中创建的KeyGenerator对象。

//Creating a SecureRandom object SecureRandom secRandom = new SecureRandom(); //Initializing the KeyGenerator keyGen.init(secRandom);

示例下面的示例演示了使用javax.crypto包的KeyGenerator类生成密钥。

import javax.crypto.Cipher; import javax.crypto.KeyGenerator; import java.security.Key; import java.security.SecureRandom; public class KeyGeneratorExample { public static void main(String args[]) throws Exception{ //Creating a KeyGenerator object KeyGenerator keyGen = KeyGenerator.getInstance("DES"); //Creating a SecureRandom object SecureRandom secRandom = new SecureRandom(); //Initializing the KeyGenerator keyGen.init(secRandom); //Creating/Generating a key Key key = keyGen.generateKey(); System.out.println(key); Cipher cipher = Cipher.getInstance("DES/ECB/PKCS5Padding"); cipher.init(cipher.ENCRYPT_MODE, key); String msg = new String("Hi how are you"); byte[] bytes = cipher.doFinal(msg.getBytes()); System.out.println(bytes); } }

执行上面示例代码,得到以下结果:

com.sun.crypto.provider.DESKey@18629 [B@2ac1fdc4

¥ 我要打赏 纠错/补充 收藏

java keygenerator_Java密码学KeyGenerator类相关推荐

  1. Java实现AES工具类(包含CBC和ECB)

    目录 一.简介 二.AES工具类 三.实践 3.1 AES之ECB模式加密 3.2 AES之ECB模式解密 3.3 AES之CBC模式加密 3.4 AES之CBC模式解密 结语 一.简介   密码学中 ...

  2. java中的Atomic类

    文章目录 问题背景 Lock 使用Atomic java中的Atomic类 问题背景 在多线程环境中,我们最常遇到的问题就是变量的值进行同步.因为变量需要在多线程中进行共享,所以我们必须需要采用一定的 ...

  3. Java非对称加密KeyPairGenerator类

    Java加密的常用的加密算法类型有三种 1单向加密: 也就是不可逆的加密,例如MD5,SHA,HMAC 2对称加密: 也就是加密方和解密方利用同一个秘钥对数据进行加密和解密,例如DES,PBE等等 3 ...

  4. java 中常用的类

    java 中常用的类 Math Math 类,包含用于执行基本数学运算的方法 常用API 取整 l  static double abs(double  a) 获取double 的绝对值 l  sta ...

  5. java封装对象实体类_Java 接口自动化系列--实体类之entity封装

    实体包entity下面有4个类,主要存放java对象,每个类必须有私有属性,空参构造,get set方法 具体excel中数据信息见---工具类excel文章 1.API类 解析excel中接口信息的 ...

  6. Java封装OkHttp3工具类

    点击关注公众号,Java干货及时送达  作者:如漩涡 https://blog.csdn.net/m0_37701381 Java封装OkHttp3工具类,适用于Java后端开发者 说实在话,用过挺多 ...

  7. Java中的BigDecimal类你真的了解吗?

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试资料 作者:HikariCP www.jianshu.com/p/c81 ...

  8. java输入字符串异常_设计一个 Java 程序,自定义异常类,从命令行(键盘)输入一个字符串,如果该字符串值为“XYZ”。。。...

    设计一个 Java 程序,自定义异常类,从命令行(键盘)输入一个字符串,如果该字符串值为"XYZ",则抛出一个异常信息"This is a XYZ",如果从命令 ...

  9. java中随机数怎么定义类_浅析Java中的随机数类

    Java中的随机数是否可以重复?Java中产生的随机数能否可以用来产生数据库主键?带着这个问题,我们做了一系列测试. 1.测试一: 使用不带参数的Random()构造函数 * @author Carl ...

最新文章

  1. Java眼中的XML--文件读取--2 应用SAX方式解析XML
  2. python合法关键字是_python练习题-day18
  3. FZU 1914 Funny Positive Sequence
  4. php sql判断l列的存在,thinkphp 模块不存在:404
  5. JS——try catch throw
  6. oracle 数组的用法,Oracle数组用法
  7. LAMP组合之服务分离部署
  8. jstl mysql 更新_JSTL使用总结(1) 核心标签库和SQL标签库
  9. DataTable 排序 查询
  10. Web渗透测试学习路线图
  11. navicat 与sqlserver2012连接报错无法连接到服务器
  12. 几个常用快速无损压缩算法性能比较
  13. java如何将mp4写入光盘_MP4文件刻录成DVD
  14. 基于QT实现西克sick激光LMS系列单线激光数据读取及显示
  15. Qt编写水波进度条控件
  16. Android 蓝牙 -- 还原网络设置 删除蓝牙所有存储配对信息流程分析---全网唯一
  17. 什么是共识?(生活篇)
  18. 【职业经验】三年数据沉淀!2020 年度测试行业问卷调查结果火热出炉!
  19. 开源DirectShow分析器和解码器: LAV Filter
  20. 10W+字C语言硬核总结(二),值得阅读收藏!

热门文章

  1. 在Windows XP 32位系统中安装JDK 1.8
  2. 庆国庆,Power BI 统一报表门户横空出世,指南请收
  3. pcie16x能插1x的卡嘛?_小米米家直流变频电风扇1X改造增加充电电池,智米电风扇加电池---改造成功...
  4. 三星Galaxy A73显示Geekcbench:或搭载骁龙778G
  5. 宇通客车大型客车销量同比增长12.50%
  6. 上线不到两年 腾讯“小鹅拼拼”被曝即将关停
  7. 外媒:三星电子预计三季度营收创新高是得益于半导体业务
  8. 华为Mate50系列不会停更:已敲定设计方案供货时间待定
  9. 小米、360之后,货拉拉被曝已启动造车项目!官方回应
  10. iPhone 12 Pro Max外形、配置大曝光:安卓基本没对手了