java 生成对称密钥_Java中创建对称密钥的代码
1 加密
public static byte[] jiami() throws Exception
{
//密钥生成器
KeyGenerator key=KeyGenerator.getInstance("DESede");
/**初始化密钥生成器
* 该步骤一般指定密钥的长度。如果该步骤省略的话,
* 会根据算法自动使用默认的密钥长度。指定长度时,
* 若第一步密钥生成器使用的是“DES”算法,则密钥长度必须是56位;
* 若是“DESede”,则可以是112或168位,其中112位有效;若是“AES”,
* 可以是128, 192或256位;若是“Blowfish”,则可以是32至448之间可以被8整除的数;
* “HmacMD5”和“HmacSHA1”默认的密钥长度都是64个字节
*/
key.init(168);
//生成密钥
SecretKey secret=key.generateKey();
//生成一个密钥文件 miyao.bat 以后人家需要解密 你就提供他一个文件
FileOutputStream s=new FileOutputStream("c://miyao.bat");
ObjectOutputStream st=new ObjectOutputStream(s);
st.writeObject(secret);
//工厂模式获取Cipher实例 密码器
Cipher cp=Cipher.getInstance("DESede");
//初始化cipher ENCRYPT_MODE表示加密DECRYPT_MODE解密 后面一个参数是密钥
cp.init(Cipher.ENCRYPT_MODE, secret);
//定义一个明文
String pwd="liaomin999";
//获取字符串的utf-8字节码
byte[] by=pwd.getBytes("utf-8");
//对字节码机密 miby就是加密后的字节码
byte[] miby=cp.doFinal(by);
//获取密文字符串
return miby;
}
2解密
public static String jiemi(byte[] miwen) throws Exception
{
//通过提供的密钥文件 获取密钥对象 进行解密
FileInputStream s=new FileInputStream("c://miyao.bat");
ObjectInputStream st=new ObjectInputStream(s);
SecretKey secret=(SecretKey)st.readObject();
//工厂模式获取Cipher实例 密码器
Cipher cp=Cipher.getInstance("DESede");
//初始化cipher ENCRYPT_MODE表示加密DECRYPT_MODE解密 后面一个参数是密钥
cp.init(Cipher.DECRYPT_MODE, secret);
//对密文字节码进行解密 如果密码写入文件可以使用文件流读写成一个数组
byte[] miby=cp.doFinal(miwen);
//获取密文字符串
String minwen=new String(miby,"utf-8");
return minwen;
}
public static void main(String[] args) throws Exception {
byte[] miwen=jiami();
String minwen=jiemi(miwen);
System.out.println(minwen);
}
java 生成对称密钥_Java中创建对称密钥的代码相关推荐
- Java生成随机数原理_Java中随机数的产生方式与原理详解
Java中随机数的产生方式与原理 查阅随机数相关资料,特做整理 首先说一下java中产生随机数的几种方式 在j2se中我们可以使用Math.random()方法来产生一个随机数,这个产生的随机数是0- ...
- java 生成pdf文件_Java 中HTTP响应数据生成PDF,PDF文件的读取
将HTTP响应数据生成PDF,这一步的话,就比较坑,浪费了好多时间,查了很多资料,也是我想把它记录下来的主要原因, 废话少说,先说踩的坑 1.区分字符流.字节流 这里可以百度一下,但是简言之就是: j ...
- java 生成多叉树_java中多叉树(tree)的生成与显示 | 学步园
先看看多叉树的表示吧. 一. 多叉树的表示: 由于要表示多个孩子,不能像二叉树那样一个leftchild,一个rightchild.当然你也可以选择采用孩子兄弟表示法来将多叉树转化成二叉树.但java ...
- java jceks 密钥_Java中不同类型的密钥库(Keystore) – 概述
阅读: 877 密钥库是用于存储加密密钥和证书的存储工具 ,最常用于SSL通信,以证明服务器和客户端的身份.密钥库可以是文件或硬件设备.有三种类型的条目可以存储在密钥库中,取决于密钥库的类型,这三种类 ...
- java string对象创建对象_Java String 创建了几个对象
我们首先来看一段代码: Java代码 String str=new String("abc"); 紧接着这段代码之后的往往是这个问题,那就是这行代码究竟创建了几个String对象呢 ...
- Java:在网络路径中创建文件
应用场景 使用Java语言在网络路径中创建文件. 实现 本地路径 首先在本地路径中创建文件的代码是这样的. import java.io.*; import java.text.CompactNumb ...
- 关于《机器学习实战》中创建决策树的核心代码分析
关于<机器学习实战>中创建决策树的核心代码分析 SIAT nyk 2017年10月21日星期六 一.源码内容 def create ...
- java 导出mdb文件_Java中Java生成mdb文件工具类
package com.util; /** * Java生成mdb文件[MS Access文件] * 1. 在ClassPath下存一个空的blank.mdb. (也就是在你的项目中包含一个空白的 ...
- java文件不存在就创建_Java中创建并写文件的5种方式
阅读本文前,请您先点击上面的蓝色字体,再点击"关注",这样您就可以继续免费收到最新文章了.每天都有分享.完全是免费订阅,请放心关注.注:本文转载自网络,不代表本平台立场,仅供读者参 ...
最新文章
- 基于Pytorch对YOLOV5 进行简易实现
- 如何提高数据安全性与可用性——行云管家堡垒机
- 4-曲线拐点模型分析
- reactinput聚焦事件_React focus 事件的坑
- 出差在外,无法随时随地查看报表?那是因为你还不知道移动端报表
- 某个目录下产品根据创建时间下架
- mongdo通用类(C#版)
- 长跑常用必知的关键字及100条跑步的建议
- Linux服务器多线程编程
- 项目管理学习——PMP 5A高分通过备考经验分享
- Topaz DeNoise AI 3.7 人工智能降噪
- 常见的测试用例设计方法8---正交试验法
- 中职计算机应用基础表格制作说课稿,表格制作说课稿.doc
- 谷歌神经网络机器翻译NMT:人人可利用TensorFlow快速建立翻译模型
- 河南省网络安全高校战队联盟CTF训练营- misc04-音频隐写
- 全局变量和静态变量以及内存堆栈的关系
- [小说]魔王冢(楔子)
- 单片机毕业设计 STM32自动泊车系统 - 智能小车 自动停车
- oracle hr 密码修改,Oracle 11g用户修改密码及加锁解锁功能实例代码
- 观《逻辑思维 -- 时间的朋友》跨年演讲