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

java代碼aes解密 javaaes加密解密算法

請教個關(guān)于Java實現(xiàn)AES加解密的問題

JDK對DESede算法的支持

十余年的白堿灘網(wǎng)站建設(shè)經(jīng)驗,針對設(shè)計、前端、開發(fā)、售后、文案、推廣等六對一服務(wù),響應(yīng)快,48小時及時工作處理。成都營銷網(wǎng)站建設(shè)的優(yōu)勢是能夠根據(jù)用戶設(shè)備顯示端的尺寸不同,自動調(diào)整白堿灘建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設(shè)計,從而大程度地提升瀏覽體驗。創(chuàng)新互聯(lián)從事“白堿灘網(wǎng)站設(shè)計”,“白堿灘網(wǎng)站推廣”以來,每個客戶項目都認(rèn)真落實執(zhí)行。

密鑰長度:128位

工作模式:ECB/CBC/PCBC/CTR/CTS/CFB/CFB8 to CFB128/OFB/OBF8 to OFB128

填充方式:Nopadding/PKCS5Padding/ISO10126Padding/

AES加密解密的java實現(xiàn):

package com.kongxincai.encanddec;import java.security.Key;import java.security.NoSuchAlgorithmException;import javax.crypto.Cipher;import javax.crypto.KeyGenerator;import javax.crypto.SecretKey;import javax.crypto.spec.SecretKeySpec;public class AESCoder { ? private static final String KEY_ALGORITHM = "AES"; ? private static final String DEFAULT_CIPHER_ALGORITHM = "AES/ECB/PKCS5Padding";//默認(rèn)的加密算法

public static byte[] initSecretKey() { ? ? ? //返回生成指定算法密鑰生成器的 KeyGenerator 對象

KeyGenerator kg = null; ? ? ? try {

kg = KeyGenerator.getInstance(KEY_ALGORITHM);

} catch (NoSuchAlgorithmException e) {

e.printStackTrace(); ? ? ? ? ? return new byte[0];

} ? ? ? //初始化此密鑰生成器,使其具有確定的密鑰大小 ? ? ? //AES 要求密鑰長度為 128

kg.init(128); ? ? ? //生成一個密鑰

SecretKey ?secretKey = kg.generateKey(); ? ? ? return secretKey.getEncoded();

} ? private static Key toKey(byte[] key){ ? ? ? //生成密鑰

return new SecretKeySpec(key, KEY_ALGORITHM);

} ? public static byte[] encrypt(byte[] data,Key key) throws Exception{ ? ? ? return encrypt(data, key,DEFAULT_CIPHER_ALGORITHM);

} ? public static byte[] encrypt(byte[] data,byte[] key) throws Exception{ ? ? ? return encrypt(data, key,DEFAULT_CIPHER_ALGORITHM);

} ? public static byte[] encrypt(byte[] data,byte[] key,String cipherAlgorithm) throws Exception{ ? ? ? //還原密鑰

Key k = toKey(key); ? ? ? return encrypt(data, k, cipherAlgorithm);

} ? public static byte[] encrypt(byte[] data,Key key,String cipherAlgorithm) throws Exception{ ? ? ? //實例化

Cipher cipher = Cipher.getInstance(cipherAlgorithm); ? ? ? //使用密鑰初始化,設(shè)置為加密模式 ? ? ? cipher.init(Cipher.ENCRYPT_MODE, key); ? ? ? //執(zhí)行操作

return cipher.doFinal(data);

} ? public static byte[] decrypt(byte[] data,byte[] key) throws Exception{ ? ? ? return decrypt(data, key,DEFAULT_CIPHER_ALGORITHM);

} ? public static byte[] decrypt(byte[] data,Key key) throws Exception{ ? ? ? return decrypt(data, key,DEFAULT_CIPHER_ALGORITHM);

} ? public static byte[] decrypt(byte[] data,byte[] key,String cipherAlgorithm) throws Exception{ ? ? ? //還原密鑰

Key k = toKey(key); ? ? ? return decrypt(data, k, cipherAlgorithm);

} ? public static byte[] decrypt(byte[] data,Key key,String cipherAlgorithm) throws Exception{ ? ? ? //實例化

Cipher cipher = Cipher.getInstance(cipherAlgorithm); ? ? ? //使用密鑰初始化,設(shè)置為解密模式 ? ? ? cipher.init(Cipher.DECRYPT_MODE, key); ? ? ? //執(zhí)行操作

return cipher.doFinal(data);

} ? private static String ?showByteArray(byte[] data){ ? ? ? if(null == data){ ? ? ? ? ? return null;

}

StringBuilder sb = new StringBuilder("{"); ? ? ? for(byte b:data){

sb.append(b).append(",");

}

sb.deleteCharAt(sb.length()-1);

sb.append("}"); ? ? ? return sb.toString();

} ? public static void main(String[] args) throws Exception { ? ? ? byte[] key = initSecretKey();

System.out.println("key:"+showByteArray(key));

Key k = toKey(key); //生成秘鑰

String data ="AES數(shù)據(jù)";

System.out.println("加密前數(shù)據(jù): string:"+data);

System.out.println("加密前數(shù)據(jù): byte[]:"+showByteArray(data.getBytes()));

System.out.println(); ? ? ? byte[] encryptData = encrypt(data.getBytes(), k);//數(shù)據(jù)加密

System.out.println("加密后數(shù)據(jù): byte[]:"+showByteArray(encryptData));// ? ? ? System.out.println("加密后數(shù)據(jù): hexStr:"+Hex.encodeHexStr(encryptData)); ? ? ? System.out.println(); ? ? ? byte[] decryptData = decrypt(encryptData, k);//數(shù)據(jù)解密

System.out.println("解密后數(shù)據(jù): byte[]:"+showByteArray(decryptData));

System.out.println("解密后數(shù)據(jù): string:"+new String(decryptData));

}

}

通過Java如何實現(xiàn)AES密碼算法

1. AES加密字符串

public static byte[] encrypt(String content, String password) {

try {

KeyGenerator kgen = KeyGenerator.getInstance("AES");// 創(chuàng)建AES的Key生產(chǎn)者

kgen.init(128, new SecureRandom(password.getBytes()));// 利用用戶密碼作為隨機數(shù)初始化出

// 128位的key生產(chǎn)者

//加密沒關(guān)系,SecureRandom是生成安全隨機數(shù)序列,password.getBytes()是種子,只要種子相同,序列就一樣,所以解密只要有password就行

SecretKey secretKey = kgen.generateKey();// 根據(jù)用戶密碼,生成一個密鑰

byte[] enCodeFormat = secretKey.getEncoded();// 返回基本編碼格式的密鑰,如果此密鑰不支持編碼,則返回

// null。

SecretKeySpec key = new SecretKeySpec(enCodeFormat, "AES");// 轉(zhuǎn)換為AES專用密鑰

Cipher cipher = Cipher.getInstance("AES");// 創(chuàng)建密碼器

byte[] byteContent = content.getBytes("utf-8");

cipher.init(Cipher.ENCRYPT_MODE, key);// 初始化為加密模式的密碼器

byte[] result = cipher.doFinal(byteContent);// 加密

return result;

} catch (NoSuchPaddingException e) {

e.printStackTrace();

} catch (NoSuchAlgorithmException e) {

e.printStackTrace();

} catch (UnsupportedEncodingException e) {

e.printStackTrace();

} catch (InvalidKeyException e) {

e.printStackTrace();

} catch (IllegalBlockSizeException e) {

e.printStackTrace();

} catch (BadPaddingException e) {

e.printStackTrace();

}

return null;

}

2. AES解密

public static byte[] decrypt(byte[] content, String password) {

try {

KeyGenerator kgen = KeyGenerator.getInstance("AES");// 創(chuàng)建AES的Key生產(chǎn)者

kgen.init(128, new SecureRandom(password.getBytes()));

SecretKey secretKey = kgen.generateKey();// 根據(jù)用戶密碼,生成一個密鑰

byte[] enCodeFormat = secretKey.getEncoded();// 返回基本編碼格式的密鑰

SecretKeySpec key = new SecretKeySpec(enCodeFormat, "AES");// 轉(zhuǎn)換為AES專用密鑰

Cipher cipher = Cipher.getInstance("AES");// 創(chuàng)建密碼器

cipher.init(Cipher.DECRYPT_MODE, key);// 初始化為解密模式的密碼器

byte[] result = cipher.doFinal(content);

return result; // 明文

} catch (NoSuchAlgorithmException e) {

e.printStackTrace();

} catch (NoSuchPaddingException e) {

e.printStackTrace();

} catch (InvalidKeyException e) {

e.printStackTrace();

} catch (IllegalBlockSizeException e) {

e.printStackTrace();

} catch (BadPaddingException e) {

e.printStackTrace();

}

return null;

}

java如何用Aes加密和解密

你解密的key必須是加密的key啊

你看看,你解密的時候又KeyGenerator.getInstance("AES").generateKey();這是重新搞了一個key啊,當(dāng)然解不出來了

我估計你這代碼人家原先是寫在一起的吧,加密完了再直接解密給你看,人家只generateKey一次,自然很順利,你分成了兩個例子,居然分別generateKey,自然失敗

java實現(xiàn)ase加密解密

這個算法java SDK自帶的額 參考代碼如下:

/**解密

*?@param?content??待解密內(nèi)容

*?@param?password?解密密鑰

*?@return

*/

public?static?byte[]?decrypt(byte[]?content,?String?password)?{

try?{

KeyGenerator?kgen?=?KeyGenerator.getInstance("AES");

kgen.init(128,?new?SecureRandom(password.getBytes()));

SecretKey?secretKey?=?kgen.generateKey();

byte[]?enCodeFormat?=?secretKey.getEncoded();

SecretKeySpec?key?=?new?SecretKeySpec(enCodeFormat,?"AES");

Cipher?cipher?=?Cipher.getInstance("AES");//?創(chuàng)建密碼器

cipher.init(Cipher.DECRYPT_MODE,?key);//?初始化

byte[]?result?=?cipher.doFinal(content);

return?result;?//?加密

}?catch?(NoSuchAlgorithmException?e)?{

e.printStackTrace();

}?catch?(NoSuchPaddingException?e)?{

e.printStackTrace();

}?catch?(InvalidKeyException?e)?{

e.printStackTrace();

}?catch?(IllegalBlockSizeException?e)?{

e.printStackTrace();

}?catch?(BadPaddingException?e)?{

e.printStackTrace();

}

return?null;

}

/**

*?加密

*

*?@param?content?需要加密的內(nèi)容

*?@param?password??加密密碼

*?@return

*/

public?static?byte[]?encrypt(String?content,?String?password)?{

try?{

KeyGenerator?kgen?=?KeyGenerator.getInstance("AES");

kgen.init(128,?new?SecureRandom(password.getBytes()));

SecretKey?secretKey?=?kgen.generateKey();

byte[]?enCodeFormat?=?secretKey.getEncoded();

SecretKeySpec?key?=?new?SecretKeySpec(enCodeFormat,?"AES");

Cipher?cipher?=?Cipher.getInstance("AES");//?創(chuàng)建密碼器

byte[]?byteContent?=?content.getBytes("utf-8");

cipher.init(Cipher.ENCRYPT_MODE,?key);//?初始化

byte[]?result?=?cipher.doFinal(byteContent);

return?result;?//?加密

}?catch?(NoSuchAlgorithmException?e)?{

e.printStackTrace();

}?catch?(NoSuchPaddingException?e)?{

e.printStackTrace();

}?catch?(InvalidKeyException?e)?{

e.printStackTrace();

}?catch?(UnsupportedEncodingException?e)?{

e.printStackTrace();

}?catch?(IllegalBlockSizeException?e)?{

e.printStackTrace();

}?catch?(BadPaddingException?e)?{

e.printStackTrace();

}

return?null;

}

圖像界面的話就不說了

網(wǎng)站標(biāo)題:java代碼aes解密 javaaes加密解密算法
分享URL:http://jinyejixie.com/article40/ddcciho.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站制作搜索引擎優(yōu)化、網(wǎng)站導(dǎo)航網(wǎng)站設(shè)計公司、全網(wǎng)營銷推廣虛擬主機

廣告

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

成都網(wǎng)站建設(shè)
岚皋县| 海口市| 铅山县| 永登县| 区。| 黑山县| 尚义县| 本溪| 自治县| 金堂县| 莆田市| 平乡县| 阿图什市| 建水县| 聊城市| 隆子县| 扬中市| 富顺县| 福海县| 桦川县| 沾益县| 无极县| 海安县| 思南县| 武山县| 无锡市| 木兰县| 溧水县| 武夷山市| 大邑县| 聂荣县| 三台县| 合江县| 汉川市| 五莲县| 阜阳市| 阳原县| 昭苏县| 永平县| 新乡市| 高淳县|