如何實現AES加密?
package util;
import java.io.UnsupportedEncodingException;
import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;
import java.security.SecureRandom; ##導入javax.crypto.BadPaddingException;
導入javax.crypto.Cipher;
導入javax.crypto.IllegalBlockSizeException;
導入javax.crypto.KeyGenerator;
#導入javax.crypto.NoSuchdingPadception; ##導入javax.crypto.SecretKey;
導入javax.crypto.spec.SecretKeySpec;
導入org.apache.tomcat.util.codec.binary.Base64;
/**
* @author 管理員
*
*/
public class AES {
// 加密
if (sKey == null) {##系統。
System.out.print("Key長度不是16位");
return null;
}
byte[] raw = sKey.getBytes("utf-8");
SecretKeySpec skeySpec = new SecretKeySpec(raw, "AES");
Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding");//"演算法/模式/補碼方法」## Cipher.ENCRYPT_MODE, skeySpec);
byte[] 加密= cipher.doFinal(sSrc.getBytes("utf-8"));
return new Base64().encodeToString(entedyp);這裡使用BASE64做轉碼功能,同時可以發揮2次加密的功能。
// 解密
public static String Decrypt(String sSrc, String sKey) throws Exception {
try {
# # System.out.print("Key為空null");
return null 為16位元
if (sKey.length() != 16) {
System.out.print("Key長度不是16位元");
[] raw = sKey.getBytes("utf-8");
SecretKeySpec skeySpec = new SecretKeySpec(raw, "AES");
Cipher cipher = Cipher.getInstance("AES/ECB/CS 5, ipher.DECRYPT_MODE, skeySpec);
byte[] encrypted1 = new Base64().decode(sSrc);//先用base64解密
try {
try {
時 String originalString = new String( original,"utf-8");
return originalString;
} catch (Exception e) {## .
return null;
}
} catch (Exception ex) {
System.out.println(ex.toString());
# . /**
* 加密
*
* @param content 需要加密的內容
* @param password 加密密碼
* @return
## */
public static byte[] encrypt(String content, String password) {
= KeyGenerator.getInstance("AES");
kgen.init(128, new SecureRandom (password.getBytes()));
SecretKey secretKey = kgen.generateKey();
getd );
SecretKeySpec key = new SecretKeySpec(enCodeFormat, "AES") ;
Cipher cipher = Cipher.getInstance("AES");// 建立密碼器
gety ");
cipher.init(Cipher.ENCRYPT_MODE , key);// 初始化
byte[] result = cipher.doFinal(byteContent); } catch (NoSuchAlgorithmException e) {
e.printStackTrace();
} catch (NoSuchPaddingException e) {
## e.printStackTrace();
} catch (UnsupportedEncodingException e) {
# e.printStackTrace();
} catch (IllegalBlockSizeException e) {
# e.printStackTrace();
} catch (BadPaddingException e) {
e.printStackTrace();
}
回復中 null;
}
/**解密
* @param content 待解密內容
* @param password 解密金鑰
* @return
*/
public static byte[]解密(byte[]內容,字串密碼) {
KeyGenerator kgen = KeyGenerator.getInstance( "高級加密標準」);
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");//建立密碼器
/建立密碼器
. ## byte[] result = cipher .doFinal(內容);
返回結果; // 加密
} 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();
}
回復中 null;
}
/**將二進位轉換成16進位
* @param buf
* @return
*/
public static String parseByte2HexStr(byte buf[]) {
String 若
for (int i = 0; i .
if (hex.length() == 1) {
}
sb.中上(hex.toUpperCase());
}
return sb.toString();
}
/**將16進位轉換為二進位
* @param hexStr
* @return
*/
public static byte[] parseHexStr2Byte(String hexStr) {
1 # 1) return null;
byte[] 結果 = 新 byte[hexStr.length()/2];
for (int i = 0;iint high = Integer.parseInt(hexStr.substring(i*2, i*2+1), 16);
int low = Integer.parseInt(hexStr. ), 16);
result[i] = (byte) (high * 16 + low);
turn
}
public static void main(String [] args) throws Exception {
/*
* 此處使用AES-128-ECB加密模式,key需為16位元。
*/
String cKey = "1234567890123456";
// 需要加密的字串
System.out.println(cSrc) ;
// 加密
String enString = AES.Encrypt(cSrc, cKey);
System.out.println("加密後的字符串是:" + enystem.out.println("加密後的字符串是:#enystem.out. // 解密
String DeString = AES.Decrypt(enString, cKey);
System.out.println("解密後的字串為:" + DeString);
String password = "12345678";
//加密
System.out.println("加密前:## System.out.println("加密前:## S pt(content, password);
String encryptResultStr = parseByte2HexStr(encryptResult);
System.out.println("加密後:" + encryptResultStr byte[] decryptFrom = parseHexStr2Byte(encryptResultStr);
byte[] decryptResult = decrypt(decryptFrom,password);
System.out.println("解密後:" + new String(decryptResult));
}##}
以上是如何實現AES加密?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

Bitlocker是Windows作業系統的預設加密技術。它在Windows上被廣泛使用,但一些用戶更喜歡第三方解決方案,例如VeraCrypt。 Bitlocker的許多用戶不知道的是,它預設為128位元加密,即使256位元也可用。無需過多地介紹差異的細節;AES128位元和256位元加密之間的核心區別在於安全密鑰的長度。更長的密鑰使暴力攻擊更加困難。雖然預設為128位,但即使是Microsoft也建議使用256位來提高安全性。問題是,大多數用戶可能不知道較弱的預設值或如何進行更改。首先,您可能想知道W

先前微軟為win11提供了dns加密服務,但不少用戶不知道win11加密dns怎麼使用,其實我們只需要打開網路設定下的dns設定。 win11加密dns詳細教學:1、先進入磁碟,找到想要加密的資料夾。 2.接著開啟右側的「乙太網路」3、然後再下方找到DNS伺服器分配,點選「編輯」4、將其中的「自動(DHCP)」改為「手動」後,開啟下方「IPv4」5、開啟後,在首選DNS中輸入“8.8.8.8”6、然後將首選DNS加密改為“僅加密(通過HTTPS的DNS)”7、更改完成後點擊“保存”,就可以發現

文件加密,旨在對資料實施專業級別的加密從而更有效地確保資料的安全性!僅掌握了正確加密金鑰方可執行解密操作,實質保障資訊資產安全。然而,Win10家庭版檔案加密功能尚不具備此項特性。 win10家庭版能加密資料夾嗎答:win10家庭版不能加密資料夾。 Windows系統加密檔案的教學1、在想要加密的檔案或資料夾上使用右鍵操作(或長按一段時間),接下來請選取「屬性」功能。 2.在展開的新介面中,尋找「進階」選項,點選進入後,記得勾選位於下方「加密內容以保護資料」選項。 3、設定完成後,點選「確定」來

小編將為大家介紹加密壓縮的三種方法:方法一:加密最簡單的加密方法,就是在加密檔案時輸入想要設定的密碼,完成加密和壓縮了。方法二:自動加密普通的加密方式,需要我們加密每個檔案的時候都需要輸入密碼,如果你想要加密大量壓縮包,並且密碼是一樣的話,那麼我們可以在WinRAR中設定自動加密,之後只要正常壓縮文件,WinRAR會為每個壓縮包添加密碼。方法如下:開啟WinRAR,點選選項–設定設定介面中,切換到【壓縮】,點選建立預設設定–設定密碼在這裡輸入我們想要設定的密碼,點選確定就完成設定了,我們只需要正

資料夾加密是一種常見的資料保護方法,它可以將資料夾中的內容加密,使得只有掌握解密密碼的人能夠存取其中的檔案。在進行資料夾加密時,有一些常見的方法可以用來設定密碼,而不需要壓縮檔案。首先,我們可以使用作業系統自帶的加密功能來設定資料夾密碼。對於Windows使用者來說,可以透過以下步驟來設定:選擇要加密的資料夾,滑鼠右鍵點選資料夾,選擇「屬性」選

C#中常見的網路通訊和安全性問題及解決方法在當今互聯網時代,網路通訊已成為了軟體開發中必不可少的一部分。在C#中,我們通常會遇到一些網路通訊的問題,例如資料傳輸的安全性、網路連線的穩定性等。本文將針對C#中常見的網路通訊和安全性問題進行詳細討論,並提供相應的解決方法和程式碼範例。一、網路通訊問題網路連線中斷:網路通訊過程中,可能會出現網路連線的中斷,這會導致

有的朋友想要保護自己的文件,但不知道win11文件怎麼加密,其實我們可以直接使用資料夾加密也可以用第三方軟體加密文件。 win11文件加密詳細教學:1、先找到想要加密的文件,右鍵選中,開啟「屬性」2、接著點擊屬性一欄的「高級」3、在高級中選擇「加密內容以便保護資料」並點選「確定」4、然後點選「確定」儲存。 5.最後選擇想要的加密模式並「確定」儲存即可加密文件了。

PHP加密和解密函數大全:md5、sha1、base64_encode等函數的安全應用方法,需要具體程式碼範例在網路應用的開發中,資料的加密和解密是非常重要的。 PHP作為一種流行的伺服器端腳本語言,提供了多種加密和解密函數,本文將介紹常用的函數及其安全應用方法,並提供特定的程式碼範例。 md5函數md5函數是最常見的一種加密函數,可以將任意長度的字串轉換為32位
