色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

php aes加密解密 java

李佳璐1年前7瀏覽0評論

PHP與Java都是非常流行的編程語言,它們在很多領域中都被廣泛使用。而在安全領域中,加密算法則是非常重要的一部分內容。本文將重點探討PHP中常用的AES加密解密算法和如何在Java中解密AES加密的數據。

AES算法是一種對稱密鑰加密算法,對于傳輸的數據進行加密后,只有持有密鑰的用戶才能解密數據。在PHP中,我們可以使用openssl_encrypt()和openssl_decrypt()兩個函數進行加密和解密,其中需要傳入參數包括加密算法類型、加密算法模式、密鑰和初始向量等信息。

//加密函數
function encrypt($data, $key){
$cipher = "aes-128-cbc";
$ivlen = openssl_cipher_iv_length($cipher);
$iv = openssl_random_pseudo_bytes($ivlen);
$ciphertext = openssl_encrypt($data, $cipher, $key, OPENSSL_RAW_DATA, $iv);
return base64_encode($iv.$ciphertext);
}
//解密函數
function decrypt($data, $key){
$cipher = "aes-128-cbc";
$ivlen = openssl_cipher_iv_length($cipher);
$ciphertext = base64_decode($data);
$iv = substr($ciphertext, 0, $ivlen);
$ciphertext = substr($ciphertext, $ivlen);
$plaintext = openssl_decrypt($ciphertext, $cipher, $key, OPENSSL_RAW_DATA, $iv);
return $plaintext;
}

在Java中,我們需要導入Java Cryptography Extension (JCE) Policy Files,以便支持AES加密算法。我們可以使用javax.crypto包中的Cipher類進行解密,其中需要傳入參數包括加密算法類型、加密算法模式和密鑰等信息。需要注意的是,密鑰需要使用Base64解碼后再使用。

//解密函數
private static String decrypt(String key, String encrypted) throws Exception {
byte[] keyBytes = Base64.getDecoder().decode(key.getBytes());
byte[] iv = Arrays.copyOf(encrypted.getBytes(), 16);
byte[] encryptedBytes = Arrays.copyOfRange(encrypted.getBytes(), 16, encrypted.getBytes().length);
SecretKeySpec secretKeySpec = new SecretKeySpec(keyBytes, "AES");
Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
cipher.init(Cipher.DECRYPT_MODE, secretKeySpec, new IvParameterSpec(iv));
byte[] decryptedBytes = cipher.doFinal(encryptedBytes);
return new String(decryptedBytes);
}

總之,使用AES算法進行加密解密是一種非常常用的加密算法。PHP和Java中各有對應的實現方式,在使用時需要注意參數的傳遞方式及格式轉換等問題。