首页 > 编程语言 >Java安全架构____KeyGenerator(对称)秘钥生成工具详解

Java安全架构____KeyGenerator(对称)秘钥生成工具详解

时间:2023-09-13 12:32:24浏览次数:51  
标签:Java String generator KeyGenerator ____ static key new


package com.ryx.frame.security.aes;

import java.security.SecureRandom;
import java.util.Date;

import javax.crypto.KeyGenerator;
import javax.crypto.SecretKey;

import org.apache.commons.codec.binary.Base64;

public class KeyGeneral{
	/**
	 * AES 128,256
	 * DEA 56
	 */
//===========================加密方式======================\\
	private static final String ALGORITHM_HMACMD5="HmacMD5";
	private static final String ALGORITHM_AES="AES";
	private static final String ALGORITHM_DES="DES";
//===========================加密类型于算法无关======================\\
	//默认
	public static String initDefault() {
		String key = "";
		try {
			KeyGenerator generator = KeyGenerator.getInstance(ALGORITHM_HMACMD5);
			SecretKey secretKey=generator.generateKey();
			byte[]bytes=encode(secretKey.getEncoded());
			key=new String(bytes);
		} catch (Exception e) {
			e.printStackTrace();
		}
		return key;
	}
	//安全随机种子
	public static String initAESKey(int keysize,long seed) {
		String key = "";
		try {
			KeyGenerator generator = KeyGenerator.getInstance(ALGORITHM_AES);
		    SecureRandom random=new  SecureRandom();
		    random.setSeed(seed);
			generator.init(keysize, random);
			SecretKey secretKey=generator.generateKey();
			byte[]bytes=encode(secretKey.getEncoded());
			key=new String(bytes);
		} catch (Exception e) {
			e.printStackTrace();
		}
		return key;
	}
	//安全随机种子
	public static String initDESKey(int keysize,long seed) {
		String key = "";
		try {
			KeyGenerator generator = KeyGenerator.getInstance(ALGORITHM_DES);
			SecureRandom random=new  SecureRandom();
			random.setSeed(seed);
			generator.init(keysize, random);
			SecretKey secretKey=generator.generateKey();
			byte[]bytes=encode(secretKey.getEncoded());
			key=new String(bytes);
		} catch (Exception e) {
			e.printStackTrace();
		}
		return key;
	}
//===========================base64======================\\
	public static byte[] encode(byte[]plainBytes){
		Base64 base64=new Base64();
		return base64.encode(plainBytes);
	}
	public static byte[] decode(byte[]cipherText){
		Base64 base64=new Base64();
		return base64.decode(cipherText);
	}     
//============================test========================\\
	public static void main(String[] args) {
		System.out.println("加载默认配置算法为HmacMD5__:"+initDefault());
		
		System.out.println("加载默认配置算法为AES__:"+initAESKey(256,new Date().getTime()));

		System.out.println("加载默认配置算法为DES__:"+initDESKey(56,new Date().getTime()));
	}
	
		
}

//=====================运行结果

加载默认配置算法为HmacMD5__:1MeVXQZkMWHPy0VLgpwrO44AIfFq2Y+D6gDqPz7BSLQ3iaZOR18DBI5yaSYtCTEXRQYQpwYV5d1UWVefd6v58A==
加载默认配置算法为AES__:5pUQCt/CLNK44vL+Nm7mgC7IcX1QfGnVc5BwqOrvk7M=
加载默认配置算法为DES__:FnldAm04/dY=

标签:Java,String,generator,KeyGenerator,____,static,key,new
From: https://blog.51cto.com/ratelcloud/7454366

相关文章

  • Xstream操作xml_The type org.xmlpull.v1.XmlPullParser cannot be resolved. It is i
    //1.再使用xstream解析xml时发现总是报错Thetypeorg.xmlpull.v1.XmlPullParsercannotberesolved.Itisindirectlyreferencedfromrequired.classfiles//从bug中可以看出 XmlPullParser这个类为找打xstream需要依赖这个类从网上搜了一下这个类看看属于哪个jar包发现......
  • java安全架构____读取.cer证书文件的信息
    importjava.io.FileInputStream;importjava.security.cert.CertificateFactory;importjava.security.cert.X509Certificate;/***@authorGod*随便找一个.cer文件读取即可*/publicclassCertUtil{ /** *@authorGod *@cerPathJava读取Cer证书信息 *@th......
  • 列表和元组的概念和操作(1)
    通用序列列表元组字符串通用的序列操作索引:可以使用例如greeting='Hello'greeting[0]这种操作获取第一个元素切片:切片适用于提取序列中的一部分,例如number=[1,2,3,4,5,6]number[1:4],输出的结果为[2,3,4],第一个索引是包含的第一个元素的编号,但第二个索引是切片......
  • stm32f103移植lvgl
    这篇需做前期工作:https://www.cnblogs.com/njit-sam/p/17699205.htmlLVGL官方主页:https://lvgl.io/当你想快速上手时,点击这个:https://docs.lvgl.io/master/get-started/quick-overview.html这里,官方建议可以先在电脑上模拟,按照步骤一步步来就可以了,笔者选择的是CodeBlocks,配合......
  • 完美解决Server returned HTTP response code:403 for URL报错问题
    在调用某个接口的时候,突然就遇到了Server returned HTTP response code: 403 for URL报错这个报错,导致获取不到接口的数据,下面小编给大家分享解决Server returned HTTP response code:403 for URL报错问题,感兴趣的朋友一起看看吧 前言原因依赖post请求结语......
  • 关于小程序聊天框开发遇到的问题
    1.当输入框聚焦时,聊天框页面往上进行平移,导致页面难看解决:设置输入框input的这个属性为false2.设置上面为false时,定位在下面的输入框不进行上移解决:动态设置定位top值,设置获取焦点和失去焦点的方法//定位的样式:style="{'bottom':inputHeight+'px'}"//输入框的事件@focus......
  • reset | revert 使用场景:
    reset|revert使用场景:gitreset[commitId]||备注:此id对应修改会保留;reset后修改保留至本地,处于modified状态,若不提交,则服务器提交记录依然存在,若提交,可以将reset后的结果推送到服务器gitreset--hard[commitId]||备注:reset后本地所有修改均回退(注意是所有修......
  • IDEA 接口方法不能跳转到实体类实现方法的问题
    没有跳入到实体类实现方法的I+向下的箭头图标。极大可能是因为编辑器自带的代码高亮工具(Syntaxhighlighte)失效。解决方案第一种:清除缓存第二种:快捷键ctrl+alt+shift+h选择Syntax即可......
  • Docker - start postgres
        ......
  • 如何实现一个数据库的 UDF?图数据库 NebulaGraph UDF 功能背后的设计与思考
    大家好,我是来自BOSS直聘的赵俊南,主要负责安全方面的图存储相关工作。作为一个从v1.x用到v3.x版本的忠实用户,在见证NebulaGraph发展的同时,也和它一起成长。BOSS直聘和NebulaGraph关于NebulaGraph在BOSS直聘的应用场景,大家可以看看之前文洲老师的文章(图数据库NebulaGr......