導航:首頁 > 文檔加密 > javaaes加密解密代碼

javaaes加密解密代碼

發布時間:2025-01-17 12:07:54

1. java實現ase加密解密

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

/**解密

*@paramcontent待解密內容

*@parampassword解密密鑰

*@return

*/

publicstaticbyte[]decrypt(byte[]content,Stringpassword){

try{

KeyGeneratorkgen=KeyGenerator.getInstance("AES");

kgen.init(128,newSecureRandom(password.getBytes()));

SecretKeysecretKey=kgen.generateKey();

byte[]enCodeFormat=secretKey.getEncoded();

SecretKeySpeckey=newSecretKeySpec(enCodeFormat,"AES");

Ciphercipher=Cipher.getInstance("AES");//創建密碼器

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

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

returnresult;//加密

}catch(NoSuchAlgorithmExceptione){

e.printStackTrace();

}catch(NoSuchPaddingExceptione){

e.printStackTrace();

}catch(InvalidKeyExceptione){

e.printStackTrace();

}catch(IllegalBlockSizeExceptione){

e.printStackTrace();

}catch(BadPaddingExceptione){

e.printStackTrace();

}

returnnull;

}



/**

*加密

*

*@paramcontent需要加密的內容

*@parampassword加密密碼

*@return

*/

publicstaticbyte[]encrypt(Stringcontent,Stringpassword){

try{

KeyGeneratorkgen=KeyGenerator.getInstance("AES");

kgen.init(128,newSecureRandom(password.getBytes()));

SecretKeysecretKey=kgen.generateKey();

byte[]enCodeFormat=secretKey.getEncoded();

SecretKeySpeckey=newSecretKeySpec(enCodeFormat,"AES");

Ciphercipher=Cipher.getInstance("AES");//創建密碼器

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

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

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

returnresult;//加密

}catch(NoSuchAlgorithmExceptione){

e.printStackTrace();

}catch(NoSuchPaddingExceptione){

e.printStackTrace();

}catch(InvalidKeyExceptione){

e.printStackTrace();

}catch(UnsupportedEncodingExceptione){

e.printStackTrace();

}catch(IllegalBlockSizeExceptione){

e.printStackTrace();

}catch(BadPaddingExceptione){

e.printStackTrace();

}

returnnull;

}

http://blog.csdn.net/hbcui1984/article/details/5201247
圖像界面的話就不說了

2. 如何對java請求的@requestbody前端加密後端解密

為確保前後端數據安全傳輸,本文將介紹如何在使用Spring Boot項目時,對通過@RequestBody接收的前端數據進行AES加密與後端解密的實現過程。首先,需要在Vue項目中引入`axios`和`crypto-js`兩個庫,其中`axios`用於發送請求,`crypto-js`用於加密和解密數據。



在Vue項目中創建`secret.js`文件,並編寫如下代碼:



在發送請求時,前端已准備好加密後的數據,並同時向後端發送請求。注意以下幾點:





在後端處理加密數據時,使用`hutool`工具包進行解密。



實驗結果顯示,前端與後端之間數據交換順暢,且加密與解密過程准確無誤。請嘗試使用以下鏈接快速學習Spring Boot 3.x實戰技術:



弟弟快看-教程,程序員編程資料站 | DDKK.COM



此外,推薦以下高質量的學習資源:



3. JAVA使用AES/CBC/PKCS5方式加密的內容,怎樣在C#下解密

java和C#只是語言,AES這些是演算法,所以和語言沒太大關系,
JAVA加密的「1」和c#加密的「1」結果是一樣的,解密出來也是一樣的。
///<summary>
///AES解密
///</summary>
///<paramname="cipherText">密文字元串</param>
///<returns>返回明文字元串</returns>
publicstaticstringAESDecrypt(stringshowText)
{
byte[]cipherText=Convert.FromBase64String(showText);
SymmetricAlgorithmdes=Rijndael.Create();
des.Key=Encoding.UTF8.GetBytes(Key);
des.IV=_key1;
byte[]decryptBytes=newbyte[cipherText.Length];
using(MemoryStreamms=newMemoryStream(cipherText))
{
using(CryptoStreamcs=newCryptoStream(ms,des.CreateDecryptor(),CryptoStreamMode.Read))
{
cs.Read(decryptBytes,0,decryptBytes.Length);
cs.Close();
ms.Close();
}
}
returnEncoding.UTF8.GetString(decryptBytes).Replace("","");///將字元串後尾的''去掉
}
}
上文為使用c#進行AES解密,其他的可以自行網路。

4. 請問用java如何對文件進行加密解密

packagecom.palic.pss.afcs.worldthrough.common.util;

importjavax.crypto.Cipher;
importjavax.crypto.spec.SecretKeySpec;

importrepack.com.thoughtworks.xstream.core.util.Base64Encoder;
/**
*AES加密解密
*@authorEX-CHENQI004
*
*/
publicclassAesUtils{
publicstaticfinalStringcKey="assistant7654321";
/**
*加密--把加密後的byte數組先進行二進制轉16進制在進行base64編碼
*@paramsSrc
*@paramsKey
*@return
*@throwsException
*/
publicstaticStringencrypt(StringsSrc,StringsKey)throwsException{
if(sKey==null){
("ArgumentsKeyisnull.");
}
if(sKey.length()!=16){
(
"ArgumentsKey'lengthisnot16.");
}
byte[]raw=sKey.getBytes("ASCII");
SecretKeySpecskeySpec=newSecretKeySpec(raw,"AES");

Ciphercipher=Cipher.getInstance("AES");
cipher.init(Cipher.ENCRYPT_MODE,skeySpec);

byte[]encrypted=cipher.doFinal(sSrc.getBytes("UTF-8"));
StringtempStr=parseByte2HexStr(encrypted);

Base64Encoderencoder=newBase64Encoder();
returnencoder.encode(tempStr.getBytes("UTF-8"));
}

/**
*解密--先進行base64解碼,在進行16進制轉為2進制然後再解碼
*@paramsSrc
*@paramsKey
*@return
*@throwsException
*/
publicstaticStringdecrypt(StringsSrc,StringsKey)throwsException{

if(sKey==null){
("499");
}
if(sKey.length()!=16){
("498");
}

byte[]raw=sKey.getBytes("ASCII");
SecretKeySpecskeySpec=newSecretKeySpec(raw,"AES");

Ciphercipher=Cipher.getInstance("AES");
cipher.init(Cipher.DECRYPT_MODE,skeySpec);

Base64Encoderencoder=newBase64Encoder();
byte[]encrypted1=encoder.decode(sSrc);

StringtempStr=newString(encrypted1,"utf-8");
encrypted1=parseHexStr2Byte(tempStr);
byte[]original=cipher.doFinal(encrypted1);
StringoriginalString=newString(original,"utf-8");
returnoriginalString;
}

/**
*將二進制轉換成16進制
*
*@parambuf
*@return
*/
(bytebuf[]){
StringBuffersb=newStringBuffer();
for(inti=0;i<buf.length;i++){
Stringhex=Integer.toHexString(buf[i]&0xFF);
if(hex.length()==1){
hex='0'+hex;
}
sb.append(hex.toUpperCase());
}
returnsb.toString();
}

/**
*將16進制轉換為二進制
*
*@paramhexStr
*@return
*/
publicstaticbyte[]parseHexStr2Byte(StringhexStr){
if(hexStr.length()<1)
returnnull;
byte[]result=newbyte[hexStr.length()/2];
for(inti=0;i<hexStr.length()/2;i++){
inthigh=Integer.parseInt(hexStr.substring(i*2,i*2+1),16);
intlow=Integer.parseInt(hexStr.substring(i*2+1,i*2+2),
16);
result[i]=(byte)(high*16+low);
}
returnresult;
}
publicstaticvoidmain(String[]args)throwsException{
/*
*加密用的Key可以用26個字母和數字組成,最好不要用保留字元,雖然不會錯,至於怎麼裁決,個人看情況而定
*/
StringcKey="assistant7654321";
//需要加密的字串
StringcSrc="123456";
//加密
longlStart=System.currentTimeMillis();
StringenString=encrypt(cSrc,cKey);
System.out.println("加密後的字串是:"+enString);
longlUseTime=System.currentTimeMillis()-lStart;
System.out.println("加密耗時:"+lUseTime+"毫秒");
//解密
lStart=System.currentTimeMillis();
StringDeString=decrypt(enString,cKey);
System.out.println("解密後的字串是:"+DeString);
lUseTime=System.currentTimeMillis()-lStart;
System.out.println("解密耗時:"+lUseTime+"毫秒");
}
}

5. Java帶KeyGenerator(密鑰生成器)生成AES加密,c++裡面AES解密

本文討論了Java使用密鑰生成器(KeyGenerator)創建AES加密和C++中使用AES解密的過程。具體步驟如下:

一、Java端加密流程:

Java端生成AES加密時,首先需要使用KeyGenerator類創建密鑰生成器實例。使用指定的演算法(如AES)和密鑰大小(通常為128位)初始化KeyGenerator。然後,通過調用其generateKey()方法生成密鑰。

二、Java端解密流程(示例代碼):

在Java端,解密操作通常需要使用預先生成的密鑰。解密通常涉及Cipher類,首先實例化Cipher對象,並使用密鑰和Cipher對象的指定模式(如Cipher.DECRYPT_MODE)初始化。然後,通過Cipher對象的update()或doFinal()方法對加密數據進行解密。

三、C++端解密流程:

C++能夠解密的關鍵在於正確獲取Java端生成的密鑰值。這通常涉及通過某種形式的數據交換或介面,確保C++端能夠訪問到與Java端相同的密鑰。在C++中,可以使用特定的AES庫(例如CAesLib)來實現解密操作。

四、測試與驗證:

通過Java端生成的密鑰與C++端進行解密操作,以驗證密鑰生成和解密過程的有效性。測試結果應顯示出成功解密的預期結果,證明了Java和C++之間的密鑰交換和解密操作能夠順利進行。

重要說明:確保在C++端正確獲取和使用Java端輸出的密鑰值是成功解密的關鍵步驟。具體實現可能涉及使用特定的數據交換機制或跨語言通信協議。

6. java編程一個AES加密txt文件的程序,其中AES解密文件的方法出錯,求大神搭救

你是對文件內容加的密,應該和文件類型無關把。如果用的是
AES演算法加的密的話,初始化的時候就會寫到
keygen = KeyGenerator.getInstance("AES");
//生成密鑰
deskey = keygen.generateKey();
//生成Cipher對象,指定其支持的DES演算法
c = Cipher.getInstance("AES");
加密和解密的過程幾乎是一樣的,AES是對稱加密方式,你看看加密和解密方法里的有沒有寫錯的地方。

7. AES演算法加解密:java.security.InvalidKeyException: Illegal key size

在處理AES演算法加解密時,遇到了一個「java.security.InvalidKeyException: Illegal key size」的錯誤,這個錯誤在本地環境運行沒有問題,但推送到線上環境後出現。通過搜索引擎,發現這個問題可能與軟體受到美國出口管制有關,超過128位密鑰大小時,需要替換「local_policy.jar」和「US_export_policy.jar」兩個文件。在本地環境,替換這兩個文件後問題得到解決,但在線上環境,問題依舊存在。進一步分析發現,線上環境與本地環境使用的JDK版本不同(本地JDK8 u221,線上JDK8 u101),這可能與JDK版本不一致有關,導致問題重現。查看JDK安裝目錄下的「security」文件夾,確認了線上和本地JDK文件的不同。嘗試解決該問題的方法有:手動替換「local_policy.jar」和「US_export_policy.jar」文件或升級JDK版本。但考慮到線下處理的復雜性,有人建議使用第三方庫「BouncyCastle」。雖然使用「BouncyCastle」進行解密嘗試,但問題依舊沒有解決。進一步的思考中,意識到可能需要通過代碼方式改變運行策略來解決這個問題。在Stackoverflow上找到了解決思路,即使用反射修改加密策略,通過代碼實現,無需手動替換文件或更新JDK版本。Oracle官方在JDK8 u151 Release Notes中提到,新增了一個控制加密策略的特性,使得在不手動添加包的情況下,可以擴展密鑰位數。最後的總結是,保持開發環境、測試環境和線上環境使用的JDK版本一致,可以避免不必要的時間浪費,同時,通過代碼方式修改加密策略提供了一種更高效、靈活的解決方案。

閱讀全文

與javaaes加密解密代碼相關的資料

熱點內容
捕撈季節手機指標公式源碼 瀏覽:636
webapi獲取當前伺服器地址 瀏覽:864
單片機動能 瀏覽:413
山西補發退休養老金的具體演算法 瀏覽:963
初級java面試題 瀏覽:619
程序員跳槽需要先離職嗎 瀏覽:422
北京有php市場嗎 瀏覽:415
linuxnautilus 瀏覽:551
java獲取字母 瀏覽:997
交取暖費叫什麼app 瀏覽:408
關閉445的cmd命令 瀏覽:579
python矩陣繪圖 瀏覽:427
命令與征服4破解版下載 瀏覽:610
k線突破阻力公式源碼 瀏覽:575
linux內核410 瀏覽:891
疫情就是命令防控就是責任的出處 瀏覽:126
公鑰加密體制中的演算法 瀏覽:604
python如何轉換txt 瀏覽:546
c程序員做什麼工作 瀏覽:563
微信源碼怎麼關閉 瀏覽:261