成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

java代碼生成密鑰庫 jdk生成密鑰

在java中生成密鑰對后如何保存

1、 用Vector保存并序列化存儲到文件

創(chuàng)新互聯(lián)專注于增城網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗(yàn)。 熱誠為您提供增城營銷型網(wǎng)站建設(shè),增城網(wǎng)站制作、增城網(wǎng)頁設(shè)計(jì)、增城網(wǎng)站官網(wǎng)定制、重慶小程序開發(fā)公司服務(wù),打造增城網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供增城網(wǎng)站排名全網(wǎng)營銷落地服務(wù)。

2、 鍵值對的形式寫入property文件

3、 存數(shù)據(jù)庫

java 如果隨機(jī)生成秘鑰對并獲取

好像是,..這個(gè)你可以將公鑰私鑰放到一個(gè)MAP中 在這個(gè)MAP中初始化隨即產(chǎn)生器然后生成密鑰對 我也剛接觸 還沒看懂... //生成密鑰

public static MapString,Object initKey(String seed) throws Exception{

KeyPairGenerator keygen = KeyPairGenerator.getInstance(ALGORITHM);

//初始化隨機(jī)產(chǎn)生器

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文件的問題

在申請服務(wù)器證書時(shí),用戶需要提供證書簽名請求文件(CSR)。CSR文件是一個(gè)從您的服務(wù)器生成的加密數(shù)據(jù)文件,包含了您的公司信息和web server信息。

一、 創(chuàng)建證書Keystore

keytool -genkey -alias -keyalg RSA –keysize 2048 -keystore

重要:

! 當(dāng)創(chuàng)建時(shí)必須制定您的keystore 位置;

! 如果您正在續(xù)訂您的證書,您必須創(chuàng)建新的key pair 和 keystore;

! 創(chuàng)建您的CSR和安裝您的證書,您使用它來創(chuàng)建自簽名的密鑰存儲庫時(shí),請使用相同的別名。

例如:

C:\ keytool -genkey -alias myalias -keysize 2048 -keyalg RSA -keystore c:\.mykeystore

輸入keystore密碼: password (請輸入保護(hù)證書密鑰的密碼)

您的名字與姓氏是什么?請輸入域名,例如:

您的組織單位名稱是什么?請輸入單位名稱,如: Beijing eTsec Technology Co.,Ltd.

您的組織名稱是什么?請輸入部門名稱,如: IT Dept

您所在的城市或區(qū)域名稱是什么?輸入城市名稱,如:Beijing

您所在的州或省份名稱是什么?輸入省份名稱,如:Beijing

該單位的兩字母國家代碼是什么?中國請輸入CN

CN=, OU= Beijing eTsec, O=IT, L= Beijing, ST= Beijing, C=CN 正確嗎?輸入 Y

輸入的主密碼(如果和 keystore 密碼相同,按回車):按回車

確保記住您所輸入的密碼,注意生成CSR時(shí),在第2部分中會使用它。

二、生成證書簽名請求(CSR)

1. keytool -certreq -keyalg RSA -alias -file certreq.csr -keystore

重要:

! 創(chuàng)建您的CSR和安裝您的證書,您使用它來創(chuàng)建自簽名的密鑰存儲庫時(shí),請使用相同的別名。

例如:

C:\keytool -certreq -keyalg RSA -alias myalias -file certreq.txt -keystore c:\.mykeystore

輸入keystore密碼:

2. 打開生成CSR文件certreq.txt 。這個(gè)CSR文件顯示如下:

-----BEGIN NEW CERTIFICATE REQUEST-----

MIIBujCCASMCAQAwejELMAkGA1UEBhMCQ0ExEDAOBgNVBAgTB09udGFyaW8xDzANBgNVBAcTBk90

dGF3YTEQMA4GA1UEChMHRW50cnVzdDETMBEGA1UECxMKRW50cnVzdCBDUzEhMB8GA1UEAxMYd3d3

5w6T+q/f+wIDAQABoAAwDQYJKoZIhvcNAQEEBQADgYEAF+0hqAqXumz/vGrzGVhKHlnxd7HW3ezS

GIbIUcOy1YdDc/1ZCqRpu3utYIZ6welK++l+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;/**

* 加密解密類

*/

public class Eryptogram

{

private static String Algorithm ="DES";

private String key="CB7A92E3D3491964";

//定義 加密算法,可用 DES,DESede,Blowfish

static boolean debug = false ;

/**

* 構(gòu)造子注解.

*/

public Eryptogram ()

{

} /**

* 生成密鑰

* @return byte[] 返回生成的密鑰

* @throws exception 扔出異常.

*/

public static byte [] getSecretKey () throws Exception

{

KeyGenerator keygen = KeyGenerator.getInstance (Algorithm );

SecretKey deskey = keygen.generateKey ();

System.out.println ("生成密鑰:"+bytesToHexString (deskey.getEncoded ()));

if (debug ) System.out.println ("生成密鑰:"+bytesToHexString (deskey.getEncoded ()));

return deskey.getEncoded ();

} /**

* 將指定的數(shù)據(jù)根據(jù)提供的密鑰進(jìn)行加密

* @param input 需要加密的數(shù)據(jù)

* @param key 密鑰

* @return byte[] 加密后的數(shù)據(jù)

* @throws Exception

*/

public static byte [] encryptData (byte [] input ,byte [] key ) throws Exception

{

SecretKey deskey = new javax.crypto.spec.SecretKeySpec (key ,Algorithm );

if (debug )

{

System.out.println ("加密前的二進(jìn)串:"+byte2hex (input ));

System.out.println ("加密前的字符串:"+new String (input ));

} Cipher c1 = Cipher.getInstance (Algorithm );

c1.init (Cipher.ENCRYPT_MODE ,deskey );

byte [] cipherByte =c1.doFinal (input );

if (debug ) System.out.println ("加密后的二進(jìn)串:"+byte2hex (cipherByte ));

return cipherByte ;

} /**

* 將給定的已加密的數(shù)據(jù)通過指定的密鑰進(jìn)行解密

* @param input 待解密的數(shù)據(jù)

* @param key 密鑰

* @return byte[] 解密后的數(shù)據(jù)

* @throws Exception

*/

public static byte [] decryptData (byte [] input ,byte [] key ) throws Exception

{

SecretKey deskey = new javax.crypto.spec.SecretKeySpec (key ,Algorithm );

if (debug ) System.out.println ("解密前的信息:"+byte2hex (input ));

Cipher c1 = Cipher.getInstance (Algorithm );

c1.init (Cipher.DECRYPT_MODE ,deskey );

byte [] clearByte =c1.doFinal (input );

if (debug )

{

System.out.println ("解密后的二進(jìn)串:"+byte2hex (clearByte ));

System.out.println ("解密后的字符串:"+(new String (clearByte )));

} return clearByte ;

} /**

* 字節(jié)碼轉(zhuǎn)換成16進(jìn)制字符串

* @param byte[] b 輸入要轉(zhuǎn)換的字節(jié)碼

* @return String 返回轉(zhuǎn)換后的16進(jìn)制字符串

*/

public static String byte2hex (byte [] b )

{

String hs ="";

String stmp ="";

for (int n =0 ;n b.length ;n ++)

{

stmp =(java.lang.Integer.toHexString (b [n ] 0XFF ));

if (stmp.length ()==1 ) hs =hs +"0"+stmp ;

else hs =hs +stmp ;

if (n b.length -1 ) hs =hs +":";

} return hs.toUpperCase ();

}

/**

* 字符串轉(zhuǎn)成字節(jié)數(shù)組.

* @param hex 要轉(zhuǎn)化的字符串.

* @return byte[] 返回轉(zhuǎn)化后的字符串.

*/

public static byte[] hexStringToByte(String hex) {

int len = (hex.length() / 2);

byte[] result = new byte[len];

char[] achar = hex.toCharArray();

for (int i = 0; i len; i++) {

int pos = i * 2;

result[i] = (byte) (toByte(achar[pos]) 4 | toByte(achar[pos + 1]));

}

return result;

}

private static byte toByte(char c) {

byte b = (byte) "0123456789ABCDEF".indexOf(c);

return b;

}

/**

* 字節(jié)數(shù)組轉(zhuǎn)成字符串.

* @param String 要轉(zhuǎn)化的字符串.

* @return 返回轉(zhuǎn)化后的字節(jié)數(shù)組.

*/

public static final String bytesToHexString(byte[] bArray) {

StringBuffer sb = new StringBuffer(bArray.length);

String sTemp;

for (int i = 0; i bArray.length; i++) {

sTemp = Integer.toHexString(0xFF bArray[i]);

if (sTemp.length() 2)

sb.append(0);

sb.append(sTemp.toUpperCase());

}

return sb.toString();

}

/**

* 從數(shù)據(jù)庫中獲取密鑰.

* @param deptid 企業(yè)id.

* @return 要返回的字節(jié)數(shù)組.

* @throws Exception 可能拋出的異常.

*/

public static byte[] getSecretKey(long deptid) throws Exception {

byte[] key=null;

String value=null;

//CommDao dao=new CommDao();

// List list=dao.getRecordList("from Key k where k.deptid="+deptid);

//if(list.size()0){

//value=((com.csc.sale.bean.Key)list.get(0)).getKey();

value = "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;

}

} 加密使用: byte[] key=Eryptogram.getSecretKey(deptid); //獲得鑰匙(字節(jié)數(shù)組)

byte[] tmp=Eryptogram.encryptData(password.getBytes(), key); //傳入密碼和鑰匙,獲得加密后的字節(jié)數(shù)組的密碼

password=Eryptogram.bytesToHexString(tmp); //將字節(jié)數(shù)組轉(zhuǎn)化為字符串,獲得加密后的字符串密碼解密與之差不多

分享文章:java代碼生成密鑰庫 jdk生成密鑰
瀏覽地址:http://jinyejixie.com/article38/dopsisp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供關(guān)鍵詞優(yōu)化、靜態(tài)網(wǎng)站云服務(wù)器、App開發(fā)、域名注冊、電子商務(wù)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

h5響應(yīng)式網(wǎng)站建設(shè)
大田县| 蒲城县| 平南县| 大宁县| 龙泉市| 蒲城县| 固安县| 鄂托克前旗| 将乐县| 屏边| 包头市| 祁门县| 卢湾区| 喀什市| 宣威市| 密山市| 元江| 凤翔县| 开平市| 涿州市| 三亚市| 海宁市| 宁南县| 泽州县| 兴国县| 哈密市| 金山区| 苍溪县| 民乐县| 永春县| 南京市| 杨浦区| 崇明县| 柏乡县| 富裕县| 霍山县| 湖州市| 绍兴县| 陇南市| 张北县| 拉孜县|