Login
网站首页 > 文章中心 > 其它

php和java加密解码方法_php aes加密 java无法解密

作者:小编 更新时间:2023-09-15 12:57:19 浏览量:83人看过

java进行3des加密传过来的数据,php怎么解密?

php

/**

* @Author: 黎志斌

* @version: v1.0

*/

class Encrypt

{

//加密秘钥,

private $_key;

private $_iv;

public function __construct($key, $iv)

$this-_key = $key;

$this-_iv = $iv;

}

* @param string 要加密的字符串

* @return mixed 加密成功返回加密后的字符串,否则返回false

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) {

$result = mcrypt_generic($td, $str);

mcrypt_generic_deinit($td);

mcrypt_module_close($td);

return $result;

* @param string 要解密的字符串

$result = mdecrypt_generic($td, $str);

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");

private function strUnPad($str)

return rtrim($str);

$key = 'ABCEDFGHIJKLMNOPQ';

$des = new Encrypt($key, $iv);

$str = "abcdefghijklmnopq";

echo "source: {$str},len: ",strlen($str),"\r\n";

echo "entrypt: ", $e_str, "\r\n";

echo "dntrypt: {$d_str},len: ",strlen($d_str),"\r\n";

PHP常用加密解密方法

$flag = true ?返回原始流数据

true ?返回原始流数据

$algo : 算法名称,可通过hash_algos()函数获取所有hash加密的算法

而不同.

true ?返回原始流数据.

具体算法依赖于PHP检查之后支持的算法和$salt的格式和长度,当 然具体结果也和操作系统有关.比较结果采用 hash_equals($crypted,crypt($input,$salt));//且salt值相同

Password_verify($str,$crypted);

函数返回哈希加密后的密码字符串, password_hash() 是crypt()的 一个简单封装

$algo : 算法 PASSWORD_DEFAULT ,PASSWORD_BCRYPT

$options = [

"cost"=10,//指明算法递归的层数,

"salt"="xxadasdsad"//加密盐值,即将被遗 弃,采用系统自动随机生成安全性更高

];

使用的算法、cost 和盐值作为哈希的一部分返回

Password_verify($str,$hashed);

可以进行解码;

string $mode [, string $iv ] )

mcrypt_decrypt ( string $cipher , string $key , string $crypted ,

$ciper:加密算法,mcrypt_list_algorithms()可以获取该函数所有支持的算法

$mode : 加密模式 ,mcrypt_list_modes()获取所有支持的加密模式,ecb,cbc

$key: 加密的秘钥,mcrypt_get_key_size ( string $cipher , string $mode )

获取指定的算法和模式所需的密钥长度.$key要满足这个长度,如果长 度无效会报出警告.

$iv : 加密的初始向量,可通过mcrypt_create_iv ( int $size [, int $source = MCRYPT_DEV_URANDOM ] ),

Iv的参数size:

通过mcrypt_get_iv_size ( string $cipher , string $mode )获取

Iv 的参数source:

Note: 需要注意的是,如果没有更多可用的用来产生随机数据的信息, 那么 MCRYPT_DEV_RANDOM 可能进入阻塞状态.

$data : 要加密的字符串数据

java的 DES 加密解密方法 求对应php的加密解密方法!!!!急切

DES是一种标准的数据加密算法,关于这个算法的详细介绍可以参考wiki和百度百科:

php中有一个扩展可以支持DES的加密算法,是:extension=php_mcrypt.dll

在配置文件中将这个扩展打开还不能够在windows环境下使用

下面是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);

$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);

function?do_mdecrypt($input,?$key)

$decrypted_data?=?mdecrypt_generic($td,?$input);

return?trim(chop($decrypted_data));

参考自:

java加密用PHP解密

当然可以,加密解密算法都是通用的,可以用对称加密或者是非对称加密!

为了安全性,建议使用Rsa非对称加密.

支付宝支付也是使用Rsa算法,不分语言,php和java都有现成的方法可以使用!

java 和 php 有没有相通的加密解密方法

如下:

public?static?String?do_post(String?url,?ListNameValuePair?name_value_pair)?throws?IOException?{

String?body?=?"{}";

DefaultHttpClient?httpclient?=?new?DefaultHttpClient();

try?{

HttpPost?httpost?=?new?HttpPost(url);

HttpResponse?response?=?httpclient.execute(httpost);

HttpEntity?entity?=?response.getEntity();

body?=?EntityUtils.toString(entity);

}?finally?{

httpclient.getConnectionManager().shutdown();

return?body;

public?static?String?do_get(String?url)?throws?ClientProtocolException,?IOException?{

HttpGet?httpget?=?new?HttpGet(url);

HttpResponse?response?=?httpclient.execute(httpget);

以上就是土嘎嘎小编为大家整理的php和java加密解码方法相关主题介绍,如果您觉得小编更新的文章只要能对粉丝们有用,就是我们最大的鼓励和动力,不要忘记讲本站分享给您身边的朋友哦!!

版权声明:倡导尊重与保护知识产权。未经许可,任何人不得复制、转载、或以其他方式使用本站《原创》内容,违者将追究其法律责任。本站文章内容,部分图片来源于网络,如有侵权,请联系我们修改或者删除处理。

编辑推荐

热门文章