JAVA AES 加密 親測可用
廢話不多說直接上程式碼!! 這個看不懂的就不用學java 了!
package com.pinnacle;import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;
import java.security.SecureRandom;
import javax.crypto.BadPaddingException;
import javax.crypto.Cipher;
import javax.crypto.IllegalBlockSizeException;
import javax.crypto.KeyGenerator;
import javax.crypto.NoSuchPaddingException;
import javax.crypto.SecretKey;
import javax.crypto.spec.SecretKeySpec;
import org.apache.commons.codec.binary.Base64;
public class AesTest {
/**
* 將byte陣列轉化成為16進位制輸出
* @param bytes
* @return
*/
public static String converByteToHexString(byte[] bytes) {
String result="";
for(int i=0;i<bytes.length;i++) {
int temp=bytes[i] &0xff;
String tempHex =Integer.toHexString(temp);
if(tempHex.length()<2) {
result+="0"+tempHex;
}else {
result+=tempHex;
}
}
return result;
}
/**
* AES加密演算法
* @param message
* @param password
* @return
* @throws Exception
*/
public static byte[] AESJDKEncode(String message,String password) {
try {
KeyGenerator kgen=KeyGenerator.getInstance("AES");//例項化一個用AES加密演算法的金鑰生成器
kgen.init(128,new SecureRandom(password.getBytes()));//使用使用者提供的password初始化此金鑰生成器,使其具有確定的金鑰大小128位元組長。
SecretKey secreKey=kgen.generateKey();//生成一個金鑰。
byte[] enCodeFormat=secreKey.getEncoded();//返回基本編碼格式的金鑰,如果此金鑰不支援編碼,則返回 null。
SecretKeySpec key=new SecretKeySpec(enCodeFormat, "AES");//根據給定的enCodeFormat位元組陣列構造一個用AES演算法加密的金鑰。
Cipher cipher =Cipher.getInstance("AES");//建立密碼器
cipher.init(Cipher.ENCRYPT_MODE, key);//初始化 // 以加密的方式用金鑰初始化此 Cipher。
byte[] result=cipher.doFinal(message.getBytes());//按byteContent單部分操作加密指定的
return result;//加密 返回加密過後的byteContent
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
/**
* AES解密演算法
* @param message
* @param password
* @return
*/
public static byte[] AESJDKDecode(byte[]message,String password) {
try {
KeyGenerator kgen=KeyGenerator.getInstance("AES");
kgen.init(128,new SecureRandom(password.getBytes()));
SecretKey secreKey=kgen.generateKey();
byte[] enCodeFormat=secreKey.getEncoded();
SecretKeySpec key=new SecretKeySpec(enCodeFormat, "AES");
Cipher cipher =Cipher.getInstance("AES");//建立密碼器
cipher.init(Cipher.DECRYPT_MODE, key);//初始化
byte[] result=cipher.doFinal(message);
return result;//解密
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
public static void main(String[] args) {
String content="123123123131";
String password ="key";
System.out.println("加密前的字串為:"+content);
byte[] encodeMessage=AESJDKEncode(content,password);//AES加密
System.out.println("AES 加密後為 :"+converByteToHexString(encodeMessage));
byte[] decodeMessage=AESJDKDecode(encodeMessage,password);
System.out.println("AES 最終解密後為:"+new String(decodeMessage));*/
}
}
相關文章
- JAVA base64 加密親測可用!Java加密
- JAVA中AES加密和解密Java加密解密
- Java AES加密和解密教程 - BaeldungJava加密解密
- AES加密加密
- Golang AES加密Golang加密
- AES 加密&解密加密解密
- AES加密解密加密解密
- Java 23連夜官宣釋出,IDEA親測可用!JavaIdea
- AES加密 – iOS與Java的同步實現加密iOSJava
- AES加密演算法的JAVA實現加密演算法Java
- 【親測可用】阿里雲簡訊阿里
- AES CBC 加密解密加密解密
- Vue使用AES加密Vue加密
- Centos 8 安裝RabbitMQ 3.8.4 (親測可用)CentOSMQ
- AES-CBC 模式加密模式加密
- PHP的AES加密類PHP加密
- JavaScript前端和Java後端的AES加密和解密JavaScript前端後端加密解密
- Android資料加密之Aes加密Android加密
- netcore AES同等效轉java語言 加密方法NetCoreJava加密
- golang AES-CBC 加密解密Golang加密解密
- 逆向工程加密函式:AES加密函式
- 10.12.3下Cornerstone3.0.3親測可用,分享
- MestReNova 破解版中文+MestReNova 破解工具「親測可用」
- php中aes加密和rsa加密的區別PHP加密
- 十分鐘看懂AES加密加密
- nodejs常用加密方式 RSA & AESNodeJS加密
- python AES-CBC 加密解密Python加密解密
- 安全篇-AES/RSA加密機制加密
- php ios通用的AES加密方法PHPiOS加密
- SonarQube學習(一)- 使用Docker安裝SonarQube(親測可用)Docker
- MAC下安裝mysql-python方法(親測可用)MacMySqlPython
- android系統的原始碼獲取(親測可用)Android原始碼
- AES位元組陣列加密解密流程陣列加密解密
- VB實現AES(Rijndael)加密的方法加密
- nodejs與javascript中的aes加密NodeJSJavaScript加密
- delphi加密C#解密(AES-256)加密C#解密
- anaconda安裝pytorch1.7.1的方法,親測可用PyTorch
- Tomcat 伺服器釋出資料夾【親測可用】Tomcat伺服器