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

php版des加密解密

作者:小编 更新时间:2023-09-29 17:54:16 浏览量:191人看过

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 : 要加密的字符串数据

如何用php实现和c#一致的DES加密解密

PHP实现和c#一致的DES加密解密,可以从网上搜到一大堆,但是测试后发现都没法用.以下正确代码是我经过苦苦才找到的.希望大家在系统整合时能用的上.

[csharp]?view?plain?copy?print?

//C#?版DES?加解密算法?

using?System;??

using?System.Data;??

using?System.Configuration;??

using?System.Web;??

using?System.Web.Security;??

using?System.Web.UI;??

using?System.Web.UI.WebControls;??

using?System.Web.UI.WebControls.WebParts;??

using?System.Web.UI.HtmlControls;??

using?System.Data.SqlClient;??

using?System.Security.Cryptography;??

using?System.IO;??

using?System.Text;??

public?class?Des{??

//加解密密钥?

//初始化向量?

#region?DESEnCode?DES加密??

public?static?string?DESEnCode(string?pToEncrypt,?string?sKey)??

{??

pToEncrypt?=?HttpContext.Current.Server.UrlEncode(pToEncrypt);??

DESCryptoServiceProvider?des?=?new?DESCryptoServiceProvider();??

//建立加密对象的密钥和偏移量?

//原文使用ASCIIEncoding.ASCII方法的GetBytes方法?

//使得输入密码必须输入英文文本?

des.Key?=?ASCIIEncoding.ASCII.GetBytes(sKey);??

des.IV?=?ASCIIEncoding.ASCII.GetBytes(sKey);??

MemoryStream?ms?=?new?MemoryStream();??

CryptoStream?cs?=?new?CryptoStream(ms,?des.CreateEncryptor(),?CryptoStreamMode.Write);??

cs.Write(inputByteArray,?0,?inputByteArray.Length);??

cs.FlushFinalBlock();??

StringBuilder?ret?=?new?StringBuilder();??

foreach?(byte?b?in?ms.ToArray())??

}??

ret.ToString();??

return?ret.ToString();??

}?

#endregion?

///?summary?

///?

///?/summary?

///?param?name="pToDecrypt"?待解密的字符串/param?

///?returns解密成功返回解密后的字符串,失败返源串/returns?

#region?DESDeCode?DES解密?

public?static?string?DESDeCode(string?pToDecrypt,?string?sKey)?

{?

//?HttpContext.Current.Response.Write(pToDecrypt?◆?"br"?◆?sKey);??

//?HttpContext.Current.Response.End();??

DESCryptoServiceProvider?des?=?new?DESCryptoServiceProvider();?

inputByteArray[x]?=?(byte)i;?

des.Key?=?ASCIIEncoding.ASCII.GetBytes(sKey);?

des.IV?=?ASCIIEncoding.ASCII.GetBytes(sKey);?

MemoryStream?ms?=?new?MemoryStream();?

CryptoStream?cs?=?new?CryptoStream(ms,?des.CreateDecryptor(),?CryptoStreamMode.Write);?

cs.Write(inputByteArray,?0,?inputByteArray.Length);?

cs.FlushFinalBlock();?

StringBuilder?ret?=?new?StringBuilder();?

return?HttpContext.Current.Server.UrlDecode(System.Text.Encoding.Default.GetString(ms.ToArray()));?

}

[php]?view?plain?copy?print?

php?

class?DES?

var?$key;?

var?$iv;?//偏移量?

function?DES(?$key,?$iv=0?)?{?

$this-key?=?$key;?

if(?$iv?==?0?)?{?

$this-iv?=?$key;?//默认以$key?作为?iv?

}?else?{?

$this-iv?=?$iv;?//mcrypt_create_iv?(?mcrypt_get_block_size?(MCRYPT_DES,?MCRYPT_MODE_CBC),?MCRYPT_DEV_RANDOM?);?

function?encrypt($str)?{?

//加密,返回大写十六进制字符串?

$size?=?mcrypt_get_block_size?(?MCRYPT_DES,?MCRYPT_MODE_CBC?);?

function?decrypt($str)?{?

//解密?

$str?=?mcrypt_cbc(?MCRYPT_DES,?$this-key,?$strBin,?MCRYPT_DECRYPT,?$this-iv?);?

return?$str;?

$binData?=?"";?

return?$binData;?

$pad?=?$blocksize?-?(strlen?(?$text?)?%?$blocksize);?

return?$text?.?str_repeat?(?chr?(?$pad?),?$pad?);?

$pad?=?ord?(?$text?{strlen?(?$text?)?-?1}?);?

if?($pad?strlen?(?$text?))?

return?false;?

if?(strspn?(?$text,?chr?(?$pad?),?strlen?(?$text?)?-?$pad?)?!=?$pad)?

return?substr?(?$text,?0,?-?1?*?$pad?);?

php的des加密用js解密解除乱码,发现2个加密出的东西不一样

des加密算法

des加密算法如下:

第一段:DES加密算法简介

DES(Data Encryption Standard)是目前最为流行的加密算法之一.DES是对称的,也就是说它使用同一个密钥来加密和解密数据.

从本质上来说,DES的安全性依赖于虚假表象,从密码学的术语来讲就是依赖于"混乱和扩散"的原则.混乱的目的是为隐藏任何明文同密文、或者密钥之间的关系,而扩散的目的是使明文中的有效位和密钥一起组成尽可能多的密文.两者结合到一起就使得安全性变得相对较高.

第二段:DES加密算法加密原理

最后经过初始逆置换得到分组的最终密文

用PHP的方法解DES加密

php

由于不清楚原代码的块链接模式,暂时用的CBC,对于短数据可解出.

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

mcrypt_generic_deinit($td);

mcrypt_module_close($td);

function do_mdecrypt($input, $key)

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

return trim(chop($decrypted_data));

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

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

编辑推荐

热门文章