在網絡通信過程中,數據一旦被發送,可能會受到攔截、竊聽或篡改等安全威脅。為了保障數據的安全性,現代業務中通常會采用加密算法來對傳輸的數據進行加密。其中,AES加密算法是目前應用最廣泛的加密算法之一。
JAVA是一種流行的編程語言,可以用于實現各種應用程序。在JAVA中,實現AES加密算法可以使用javax.crypto包下的類庫。以下是JAVA中使用AES算法進行加密的示例代碼:
import java.security.Key;
import javax.crypto.Cipher;
import javax.crypto.KeyGenerator;
import javax.crypto.spec.SecretKeySpec;
public class AESEncryptUtil {
private static final String ALGORITHM = "AES";
private static final String CHARSET = "UTF-8";
private static final int KEY_SIZE = 128;
// 生成密鑰
public static byte[] generateKey() throws Exception {
KeyGenerator kgen = KeyGenerator.getInstance(ALGORITHM);
kgen.init(KEY_SIZE);
Key key = kgen.generateKey();
return key.getEncoded();
}
// 加密
public static byte[] encrypt(byte[] data, byte[] key) throws Exception {
Key k = new SecretKeySpec(key, ALGORITHM);
Cipher cipher = Cipher.getInstance(ALGORITHM);
cipher.init(Cipher.ENCRYPT_MODE, k);
return cipher.doFinal(data);
}
// 解密
public static byte[] decrypt(byte[] data, byte[] key) throws Exception {
Key k = new SecretKeySpec(key, ALGORITHM);
Cipher cipher = Cipher.getInstance(ALGORITHM);
cipher.init(Cipher.DECRYPT_MODE, k);
return cipher.doFinal(data);
}
}
與JAVA相比,JS是一種瀏覽器端的腳本語言,在前后端分離的項目開發中比較常用。在JS中,也可以使用AES算法進行加密。以下是JS中使用AES算法進行加密的示例代碼:
import aesjs from 'aes-js';
const key = aesjs.utils.utf8.toBytes('1234567890123456'); // 密鑰
const text = 'hello world'; // 待加密明文
// 加密
const aesCtr = new aesjs.ModeOfOperation.ctr(key, new aesjs.Counter(5));
const encryptedBytes = aesCtr.encrypt(aesjs.utils.utf8.toBytes(text));
const encryptedHex = aesjs.utils.hex.fromBytes(encryptedBytes);
console.log(encryptedHex);
// 解密
const aesCtr2 = new aesjs.ModeOfOperation.ctr(key, new aesjs.Counter(5));
const decryptedBytes = aesCtr2.decrypt(encryptedBytes);
const decryptedText = aesjs.utils.utf8.fromBytes(decryptedBytes);
console.log(decryptedText);
無論是在JAVA還是JS中,使用AES算法進行加密都需要指定密鑰。此外,在加密過程中還需要指定加密模式和填充模式等一些參數。接下來,我們可以根據具體應用場景,靈活地應用JAVA和JS中的AES加密算法。
上一篇jquery 選擇提示框
下一篇vue生成公共模板