java keygenerator_Java密码学KeyGenerator类
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类相关推荐
- Java实现AES工具类(包含CBC和ECB)
目录 一.简介 二.AES工具类 三.实践 3.1 AES之ECB模式加密 3.2 AES之ECB模式解密 3.3 AES之CBC模式加密 3.4 AES之CBC模式解密 结语 一.简介 密码学中 ...
- java中的Atomic类
文章目录 问题背景 Lock 使用Atomic java中的Atomic类 问题背景 在多线程环境中,我们最常遇到的问题就是变量的值进行同步.因为变量需要在多线程中进行共享,所以我们必须需要采用一定的 ...
- Java非对称加密KeyPairGenerator类
Java加密的常用的加密算法类型有三种 1单向加密: 也就是不可逆的加密,例如MD5,SHA,HMAC 2对称加密: 也就是加密方和解密方利用同一个秘钥对数据进行加密和解密,例如DES,PBE等等 3 ...
- java 中常用的类
java 中常用的类 Math Math 类,包含用于执行基本数学运算的方法 常用API 取整 l static double abs(double a) 获取double 的绝对值 l sta ...
- java封装对象实体类_Java 接口自动化系列--实体类之entity封装
实体包entity下面有4个类,主要存放java对象,每个类必须有私有属性,空参构造,get set方法 具体excel中数据信息见---工具类excel文章 1.API类 解析excel中接口信息的 ...
- Java封装OkHttp3工具类
点击关注公众号,Java干货及时送达 作者:如漩涡 https://blog.csdn.net/m0_37701381 Java封装OkHttp3工具类,适用于Java后端开发者 说实在话,用过挺多 ...
- Java中的BigDecimal类你真的了解吗?
点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试资料 作者:HikariCP www.jianshu.com/p/c81 ...
- java输入字符串异常_设计一个 Java 程序,自定义异常类,从命令行(键盘)输入一个字符串,如果该字符串值为“XYZ”。。。...
设计一个 Java 程序,自定义异常类,从命令行(键盘)输入一个字符串,如果该字符串值为"XYZ",则抛出一个异常信息"This is a XYZ",如果从命令 ...
- java中随机数怎么定义类_浅析Java中的随机数类
Java中的随机数是否可以重复?Java中产生的随机数能否可以用来产生数据库主键?带着这个问题,我们做了一系列测试. 1.测试一: 使用不带参数的Random()构造函数 * @author Carl ...
最新文章
- Java眼中的XML--文件读取--2 应用SAX方式解析XML
- python合法关键字是_python练习题-day18
- FZU 1914 Funny Positive Sequence
- php sql判断l列的存在,thinkphp 模块不存在:404
- JS——try catch throw
- oracle 数组的用法,Oracle数组用法
- LAMP组合之服务分离部署
- jstl mysql 更新_JSTL使用总结(1) 核心标签库和SQL标签库
- DataTable 排序 查询
- Web渗透测试学习路线图
- navicat 与sqlserver2012连接报错无法连接到服务器
- 几个常用快速无损压缩算法性能比较
- java如何将mp4写入光盘_MP4文件刻录成DVD
- 基于QT实现西克sick激光LMS系列单线激光数据读取及显示
- Qt编写水波进度条控件
- Android 蓝牙 -- 还原网络设置 删除蓝牙所有存储配对信息流程分析---全网唯一
- 什么是共识?(生活篇)
- 【职业经验】三年数据沉淀!2020 年度测试行业问卷调查结果火热出炉!
- 开源DirectShow分析器和解码器: LAV Filter
- 10W+字C语言硬核总结(二),值得阅读收藏!
热门文章
- 在Windows XP 32位系统中安装JDK 1.8
- 庆国庆,Power BI 统一报表门户横空出世,指南请收
- pcie16x能插1x的卡嘛?_小米米家直流变频电风扇1X改造增加充电电池,智米电风扇加电池---改造成功...
- 三星Galaxy A73显示Geekcbench:或搭载骁龙778G
- 宇通客车大型客车销量同比增长12.50%
- 上线不到两年 腾讯“小鹅拼拼”被曝即将关停
- 外媒:三星电子预计三季度营收创新高是得益于半导体业务
- 华为Mate50系列不会停更:已敲定设计方案供货时间待定
- 小米、360之后,货拉拉被曝已启动造车项目!官方回应
- iPhone 12 Pro Max外形、配置大曝光:安卓基本没对手了