本文目錄一覽:
- 1、前端使用CryptoJS AES加密 ,後端php解密問題
- 2、php AES加密對不上java的加密,請問如何實現?
- 3、java的 DES 加密解密方法 求對應php的加密解密方法!!!!急切
- 4、java aes加密 如何用php 進行解密,以下是java代碼,求php 代碼如何寫 (主要是createkey 那個方法)
- 5、java如何用Aes加密和解密
前端使用CryptoJS AES加密 ,後端php解密問題
PHP7.1 已經不能用mcrypt了,所以我用的是openssl_encrypt和openssl_decrypt。
?php
$data = “This is an AES crypt demo.”;
$privateKey = “5d4bcd5912db00c28e9ce7fd5e9b7f78”; // KEY 16字節用aes-128-cbc,32字節用aes-256-cbc
$iv= “4490d2ded4f2d4ad”; //AES的IV是16個字節
//加密
// $encrypted = openssl_encrypt($data,’aes-128-cbc’,$privateKey,0,$iv);
$encrypted = openssl_encrypt($data,’aes-256-cbc’,$privateKey,0,$iv);
echo $encrypted,PHP_EOL;
// 解密
$encryptedData = $encrypted;
// $decrypted = openssl_decrypt($encryptedData,’aes-128-cbc’,$privateKey,0,$iv);
$decrypted = openssl_decrypt($encryptedData,’aes-256-cbc’,$privateKey,0,$iv);
echo($decrypted);
輸出結果如下:
EPcMQRXA53/hRkPyILFI4fF/9sW2X53tLiDT26khNsA=
This is an AES crypt demo.
php AES加密對不上java的加密,請問如何實現?
要注意特定的Padding實現跟算法的blockSize有關,這裡php的blocksize是在php的aes加密前先對源字符串進行Padding,問題得到解決。
java的 DES 加密解密方法 求對應php的加密解密方法!!!!急切
DES是一種標準的數據加密算法,關於這個算法的詳細介紹可以參考wiki和百度百科:
php中有一個擴展可以支持DES的加密算法,是:extension=php_mcrypt.dll
在配置文件中將這個擴展打開還不能夠在windows環境下使用
需要將PHP文件夾下的 libmcrypt.dll 拷貝到系統的 system32 目錄下,這是通過phpinfo可以查看到mcrypt表示這個模塊可以正常試用了。
下面是PHP中使用DES加密解密的一個例子:
//$input – stuff to decrypt
//$key – the secret key to use
function do_mencrypt($input, $key)
{
$input = str_replace(“”n”, “”, $input);
$input = str_replace(“”t”, “”, $input);
$input = str_replace(“”r”, “”, $input);
$key = substr(md5($key), 0, 24);
$td = mcrypt_module_open(‘tripledes’, ”, ‘ecb’, ”);
$iv = mcrypt_create_iv(mcrypt_enc_get_iv_size($td), MCRYPT_RAND);
mcrypt_generic_init($td, $key, $iv);
$encrypted_data = mcrypt_generic($td, $input);
mcrypt_generic_deinit($td);
mcrypt_module_close($td);
return trim(chop(base64_encode($encrypted_data)));
}
//$input – stuff to decrypt
//$key – the secret key to use
function do_mdecrypt($input, $key)
{
$input = str_replace(“”n”, “”, $input);
$input = str_replace(“”t”, “”, $input);
$input = str_replace(“”r”, “”, $input);
$input = trim(chop(base64_decode($input)));
$td = mcrypt_module_open(‘tripledes’, ”, ‘ecb’, ”);
$key = substr(md5($key), 0, 24);
$iv = mcrypt_create_iv(mcrypt_enc_get_iv_size($td), MCRYPT_RAND);
mcrypt_generic_init($td, $key, $iv);
$decrypted_data = mdecrypt_generic($td, $input);
mcrypt_generic_deinit($td);
mcrypt_module_close($td);
return trim(chop($decrypted_data));
}
參考自:
java aes加密 如何用php 進行解密,以下是java代碼,求php 代碼如何寫 (主要是createkey 那個方法)
先看用什麼方式的加密,拿AES來說,你需要問java要到混淆值、初始化向量與AES加密的方式如AES-192-CFB.然後直接調用openssl_decrypt方法進行解密.
openssl_decrypt(‘需要解密的字符串’,’AES-192-CFB’,’混淆值’,0,’初始化向量’),true)
java如何用Aes加密和解密
你解密的key必須是加密的key啊
你看看,你解密的時候又KeyGenerator.getInstance(“AES”).generateKey();這是重新搞了一個key啊,當然解不出來了
我估計你這代碼人家原先是寫在一起的吧,加密完了再直接解密給你看,人家只generateKey一次,自然很順利,你分成了兩個例子,居然分別generateKey,自然失敗
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/237819.html