java代码生成密钥库 java生成密钥对

java 如果随机生成秘钥对并获取好像是,..这个你可以将公钥私钥放到一个MAP中 在这个MAP中初始化随即产生器然后生成密钥对 我也刚接触 还没看懂... //生成密钥
public static MapString,Object initKey(String seed) throws Exception{
KeyPairGenerator keygen = KeyPairGenerator.getInstance(ALGORITHM);
//初始化随机产生器
SecureRandom sr = new SecureRandom();
sr.setSeed(seed.getBytes());
keygen.initialize(KEY_SIZE,sr);
KeyPair keys = keygen.genKeyPair();
DSAPublicKey publicKey = (DSAPublicKey) keys.getPublic();
DSAPrivateKey privateKey = (DSAPrivateKey) keys.getPrivate();
MapString,Object map = new HashMapString,Object(2);
map.put(PUBLIC_KEY, publicKey);
map.put(PRIVATE_KEY, privateKey);
return map;
}
用java keytool工具生成keystore文件的问题在申请服务器证书时,用户需要提供证书签名请求文件(CSR) 。CSR文件是一个从您的服务器生成的加密数据文件,包含了您的公司信息和web server信息 。
一、 创建证书Keystore
keytool -genkey -alias -keyalg RSA –keysize 2048 -keystore
重要:
! 当创建时必须制定您的keystore 位置;
! 如果您正在续订您的证书,您必须创建新的key pair 和 keystore;
! 创建您的CSR和安装您的证书,您使用它来创建自签名的密钥存储库时,请使用相同的别名 。
例如:
C:\ keytool -genkey -alias myalias -keysize 2048 -keyalg RSA -keystore c:\.mykeystore
输入keystore密码: password (请输入保护证书密钥的密码)
您的名字与姓氏是什么?请输入域名,例如:
您的组织单位名称是什么?请输入单位名称 , 如: Beijing eTsec Technology Co.,Ltd.
您的组织名称是什么?请输入部门名称,如: IT Dept
您所在的城市或区域名称是什么?输入城市名称,如:Beijing
您所在的州或省份名称是什么?输入省份名称,如:Beijing
该单位的两字母国家代码是什么?中国请输入CN
CN=, OU= Beijing eTsec, O=IT, L= Beijing, ST= Beijing, C=CN 正确吗?输入 Y
输入的主密码(如果和 keystore 密码相同 , 按回车):按回车
确保记住您所输入的密码,注意生成CSR时 , 在第2部分中会使用它 。
二、生成证书签名请求(CSR)
1. keytool -certreq -keyalg RSA -alias -file certreq.csr -keystore
重要:
! 创建您的CSR和安装您的证书 , 您使用它来创建自签名的密钥存储库时,请使用相同的别名 。
例如:
C:\keytool -certreq -keyalg RSA -alias myalias -file certreq.txt -keystore c:\.mykeystore
输入keystore密码:
2. 打开生成CSR文件certreq.txt。这个CSR文件显示如下:
-----BEGIN NEW CERTIFICATE REQUEST-----
MIIBujCCASMCAQAwejELMAkGA1UEBhMCQ0ExEDAOBgNVBAgTB09udGFyaW8xDzANBgNVBAcTBk90
dGF3YTEQMA4GA1UEChMHRW50cnVzdDETMBEGA1UECxMKRW50cnVzdCBDUzEhMB8GA1UEAxMYd3d3
5w6T q/f wIDAQABoAAwDQYJKoZIhvcNAQEEBQADgYEAF 0hqAqXumz/vGrzGVhKHlnxd7HW3ezS
GIbIUcOy1YdDc/1ZCqRpu3utYIZ6welKl QjlbL6p5RJJETkkLKXjb/WVFajNuPl7Yob9pbwA7
JBrCCKbFj kzDNbGhCR1RgFA9vQj5vob41Vj k TQchliuTLL9rFXNDHrtgTMtA=
-----END NEW CERTIFICATE REQUEST-----
java加密解密代码package com.cube.limail.util;
import javax.crypto.Cipher;
import javax.crypto.KeyGenerator;
import javax.crypto.SecretKey;/**
* 加密解密类
*/
publicclassEryptogram
{
privatestaticStringAlgorithm ="DES";
private String key="CB7A92E3D3491964";
//定义 加密算法,可用 DES,DESede,Blowfish
staticbooleandebug= false ;
/**
* 构造子注解.
*/
publicEryptogram ()
{
} /**
* 生成密钥
* @return byte[] 返回生成java代码生成密钥库的密钥
* @throws exception 扔出异常.
*/
publicstaticbyte [] getSecretKey () throwsException
{
KeyGeneratorkeygen= KeyGenerator.getInstance (Algorithm );
SecretKeydeskey= keygen.generateKey ();
System.out.println ("生成密钥:" bytesToHexString (deskey.getEncoded ()));
if(debug ) System.out.println ("生成密钥:" bytesToHexString (deskey.getEncoded ()));
returndeskey.getEncoded ();
} /**
* 将指定java代码生成密钥库的数据根据提供的密钥进行加密
* @param input 需要加密的数据
* @param key 密钥
* @return byte[] 加密后的数据
* @throws Exception
*/
publicstaticbyte [] encryptData (byte [] input ,byte [] key ) throwsException
{
SecretKeydeskey= newjavax.crypto.spec.SecretKeySpec (key ,Algorithm );
if(debug )
{
System.out.println ("加密前的二进串:" byte2hex (input ));
System.out.println ("加密前的字符串:" newString (input ));
} Cipherc1= Cipher.getInstance (Algorithm );
c1.init (Cipher.ENCRYPT_MODE ,deskey );
byte [] cipherByte =c1.doFinal (input );
if(debug ) System.out.println ("加密后的二进串:" byte2hex (cipherByte ));
returncipherByte ;
} /**
* 将给定的已加密的数据通过指定的密钥进行解密
* @param input 待解密的数据
* @param key 密钥
* @return byte[] 解密后的数据
* @throws Exception
*/
publicstaticbyte [] decryptData (byte [] input ,byte [] key ) throwsException
{
SecretKeydeskey= newjavax.crypto.spec.SecretKeySpec (key ,Algorithm );
if(debug ) System.out.println ("解密前的信息:" byte2hex (input ));
Cipherc1= Cipher.getInstance (Algorithm );
c1.init (Cipher.DECRYPT_MODE ,deskey );
byte [] clearByte =c1.doFinal (input );
if(debug )
{
System.out.println ("解密后的二进串:" byte2hex (clearByte ));
System.out.println ("解密后的字符串:" (newString (clearByte )));
} returnclearByte ;
} /**
* 字节码转换成16进制字符串
* @param byte[] b 输入要转换的字节码
* @return String 返回转换后的16进制字符串
*/
publicstaticStringbyte2hex (byte [] b )
{
Stringhs ="";
Stringstmp ="";
for(intn =0 ;n b.length ;n)
{
stmp =(java.lang.Integer.toHexString (b [n ]0XFF ));
if(stmp.length ()==1 ) hs =hs"0" stmp ;
elsehs =hsstmp ;
if(n b.length -1 ) hs =hs":";
} returnhs.toUpperCase ();
}
/**
* 字符串转成字节数组.
* @param hex 要转化的字符串.
* @return byte[] 返回转化后的字符串.
*/
public static byte[] hexStringToByte(String hex) {
int len = (hex.length() / 2);
byte[] result = new byte[len];
char[] achar = hex.toCharArray();
for (int i = 0; ilen; i) {
int pos = i * 2;
result[i] = (byte) (toByte(achar[pos])4 | toByte(achar[pos1]));
}
return result;
}
private static byte toByte(char c) {
byte b = (byte) "0123456789ABCDEF".indexOf(c);
return b;
}
/**
* 字节数组转成字符串.
* @param String 要转化的字符串.
* @return 返回转化后的字节数组.
*/
public static final String bytesToHexString(byte[] bArray) {
StringBuffer sb = new StringBuffer(bArray.length);
String sTemp;
for (int i = 0; ibArray.length; i) {
sTemp = Integer.toHexString(0xFFbArray[i]);
if (sTemp.length()2)
sb.append(0);
sb.append(sTemp.toUpperCase());
}
return sb.toString();
}
/**
* 从数据库中获取密钥.
* @param deptid 企业id.
* @return 要返回的字节数组.
* @throws Exception 可能抛出的异常.
*/
public static byte[] getSecretKey(long deptid) throws Exception {
byte[] key=null;
String value=https://www.04ip.com/post/null;
//CommDao dao=new CommDao();
// List list=dao.getRecordList("from Key k where k.deptid=" deptid);
//if(list.size()0){
//value=https://www.04ip.com/post/((com.csc.sale.bean.Key)list.get(0)).getKey();
value = "https://www.04ip.com/post/CB7A92E3D3491964";
key=hexStringToByte(value);
//}
if (debug)
System.out.println("密钥:"value);
return key;
}
public String encryptData2(String data) {
String en = null;
try {
byte[] key=hexStringToByte(this.key);
en = bytesToHexString(encryptData(data.getBytes(),key));
} catch (Exception e) {
e.printStackTrace();
}
return en;
}
public String decryptData2(String data) {
String de = null;
try {
byte[] key=hexStringToByte(this.key);
de = new String(decryptData(hexStringToByte(data),key));
} catch (Exception e) {
e.printStackTrace();
}
return de;
}
} 加密使用java代码生成密钥库:byte[] key=Eryptogram.getSecretKey(deptid);//获得钥匙(字节数组)
byte[] tmp=Eryptogram.encryptData(password.getBytes(), key);//传入密码和钥匙java代码生成密钥库 , 获得加密后的字节数组的密码
password=Eryptogram.bytesToHexString(tmp);//将字节数组转化为字符串java代码生成密钥库,获得加密后的字符串密码解密与之差不多
【java代码生成密钥库 java生成密钥对】java代码生成密钥库的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于java生成密钥对、java代码生成密钥库的信息别忘了在本站进行查找喔 。

    推荐阅读