本文目錄一覽:
- 1、java進行3des加密傳過來的數據,php怎麼解密?
- 2、PHP函數mcrypt_ecb在JAVA中是哪個
- 3、急!! php 調用庫函數 mcrypt_get_block_size 無效
- 4、Java用Des方式加密之後,PHP怎麼解密
java進行3des加密傳過來的數據,php怎麼解密?
?php
/**
* 3DES加解密類
* @Author: 黎志斌
* @version: v1.0
* 2016年7月21日
*/
class Encrypt
{
//加密秘鑰,
private $_key;
private $_iv;
public function __construct($key, $iv)
{
$this-_key = $key;
$this-_iv = $iv;
}
/**
* 對字符串進行3DES加密
* @param string 要加密的字符串
* @return mixed 加密成功返回加密後的字符串,否則返回false
*/
public function encrypt3DES($str)
{
$td = mcrypt_module_open(MCRYPT_3DES, “”, MCRYPT_MODE_CBC, “”);
if ($td === false) {
return false;
}
//檢查加密key,iv的長度是否符合算法要求
$key = $this-fixLen($this-_key, mcrypt_enc_get_key_size($td));
$iv = $this-fixLen($this-_iv, mcrypt_enc_get_iv_size($td));
//加密數據長度處理
$str = $this-strPad($str, mcrypt_enc_get_block_size($td));
if (mcrypt_generic_init($td, $key, $iv) !== 0) {
return false;
}
$result = mcrypt_generic($td, $str);
mcrypt_generic_deinit($td);
mcrypt_module_close($td);
return $result;
}
/**
* 對加密的字符串進行3DES解密
* @param string 要解密的字符串
* @return mixed 加密成功返回加密後的字符串,否則返回false
*/
public function decrypt3DES($str)
{
$td = mcrypt_module_open(MCRYPT_3DES, “”, MCRYPT_MODE_CBC, “”);
if ($td === false) {
return false;
}
//檢查加密key,iv的長度是否符合算法要求
$key = $this-fixLen($this-_key, mcrypt_enc_get_key_size($td));
$iv = $this-fixLen($this-_iv, mcrypt_enc_get_iv_size($td));
if (mcrypt_generic_init($td, $key, $iv) !== 0) {
return false;
}
$result = mdecrypt_generic($td, $str);
mcrypt_generic_deinit($td);
mcrypt_module_close($td);
return $this-strUnPad($result);
}
/**
* 返回適合算法長度的key,iv字符串
* @param string $str key或iv的值
* @param int $td_len 符合條件的key或iv長度
* @return string 返回處理後的key或iv值
*/
private function fixLen($str, $td_len)
{
$str_len = strlen($str);
if ($str_len $td_len) {
return substr($str, 0, $td_len);
} else if($str_len $td_len) {
return str_pad($str, $td_len, ‘0’);
}
return $str;
}
/**
* 返回適合算法的分組大小的字符串長度,末尾使用\0補齊
* @param string $str 要加密的字符串
* @param int $td_group_len 符合算法的分組長度
* @return string 返回處理後字符串
*/
private function strPad($str, $td_group_len)
{
$padding_len = $td_group_len – (strlen($str) % $td_group_len);
return str_pad($str, strlen($str) + $padding_len, “\0”);
}
/**
* 返回適合算法的分組大小的字符串長度,末尾使用\0補齊
* @param string $str 要加密的字符串
* @return string 返回處理後字符串
*/
private function strUnPad($str)
{
return rtrim($str);
}
}
$key = ‘ABCEDFGHIJKLMNOPQ’;
$iv = ‘0123456789’;
$des = new Encrypt($key, $iv);
$str = “abcdefghijklmnopq”;
echo “source: {$str},len: “,strlen($str),”\r\n”;
$e_str = $des-encrypt3DES($str);
echo “entrypt: “, $e_str, “\r\n”;
$d_str = $des-decrypt3DES($e_str);
echo “dntrypt: {$d_str},len: “,strlen($d_str),”\r\n”;
PHP函數mcrypt_ecb在JAVA中是哪個
JDK6中有個class是java.security.Security
看看這個對你有幫助。 java可以使用MD5等這樣的加密方式
急!! php 調用庫函數 mcrypt_get_block_size 無效
那你再看看 php.ini 的配置中 ;extension=php_mcrypt.dll 這一句前面有沒有分號,如果有就把它去掉,不要有分號 ,然後重啟 apache 或 IIS 等web服務
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));
}
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/236583.html