导航:首页 > 安装方法 > PHP在哪里调用加密方法

PHP在哪里调用加密方法

发布时间:2022-09-03 16:14:00

‘壹’ 用php将密码存入数据库,用什么方法进行加密

题主你可以使用 md5 或者 sha1 进行初步处理,但为了更加安全,请你同时加上两个 salt,一个静态 salt,一个动态的 salt。以 md5 为例:
假设通过 POST 传来的密码为 $_POST['password'],在存入 DB 前先进行如下的操作:
$password = hash('md5', $_POST['password'].$staticSalt.$dynamicSalt);

为了保证动态 salt 的唯一性,可以这样操作:
$dynamicSalt = hash('md5', microtime());

对于动态的 salt 可以与生成的密码一起保存在 DB 中,而静态 salt 则可以直接放在类文件中(例如定义为一个静态属性即可)。
首先谢谢题主采纳了我的答案,但是我之前的回答并不是最佳答案,之所以有此加密的想法源于自己所读的源码可能比较老,所以并没使用上较新版本的加密方法,例如 bcrypt等。
此外,第二点,感谢评论中几位前辈的提点,已经明白设置静态 salt 的意义并不大,生成一个较长的动态 salt 已然可以解决问题。

LZ应该采用加盐HASH。
如何“腌制”密码呢?
=_,=
正确的格式应该是,用户password+动态的salt
动态的salt不能像2L所说的,使用microtime,因为时间在某些情况下不够随机,而且是可能被猜解的。
这里推荐一个我用的加盐HASH
$salt=base64_encode(mcrypt_create_iv(32,MCRYPT_DEV_RANDOM));
$password=sha1($register_password.$salt);

解释:
首先使用mcrypt,产生电脑随机生成的,专门用户加密的随机数函数。
第二步,把得到的随机数通过base64加密,使其变长并且不利于猜解。
第三步,把得出的盐拼接到密码的后面,再对其使用sha1进行哈希
再把password存入到用户的数据库。
PS:为何不用静态的salt?没有必要,使用一个动态随机足够长的盐足矣。
为何不用MD5?因为长度不够。
为何没有使用多次HASH?因为这样反而容易发生碰撞。
HASH好之后怎么使用“腌制”好的密码?
用户注册->提交密码->产生salt->腌制好的密码存入数据库->salt存入数据库。
用户登录->提交密码->调用salt接到提交密码的后面->进行HASH->调用之前注册腌制好的密码->对比HASH值是否和这个密码相同

‘贰’ PHP 加密要怎么搞

如果是不需要可逆的加密,可以用md5(标准密钥长度128位)、sha1(标准密钥长度160位)、md4、CRC-32。这个函数是将字符串变成32个长度的不重复的乱码,多用于存储用户密码。
如果需要可逆的加密,可以使用base64函数,但是容易被人反过来看到原文。复杂一点可以用openssl拓展生成密钥,利用手中的密钥生成。

‘叁’ 如何给编写的PHP程序加密

你可以去下载一个

SourceCop for PHP
是一款 Windows 平台应用程序,你可以使用它加密你的 PHP 源代码
另外,你也可以限制加密后的 PHP 脚本代码运行于指定的 IP 或设定脚本代码的到期时限。
程序特征

* 独特和非常简单的程序界面
* 加密你的 PHP 源代码
* 不需要安装在服务器上
* 方案非常容易操作
* 原始代码备份选项
* 单击进行加密
* 加密后的脚本代码可以运行于任何平台和 PHP 的大部分版本

其实PHP没必要加密 加密怎么都会对你程序有影响

‘肆’ php7代码如何加密

我们先写出函数:

<?php

function encode_file_contents($filename) {

$type=strtolower(substr(strrchr($filename,'.'),1));

if ('php' == $type && is_file($filename) && is_writable($filename)) { //

如果是PHP文件 并且可写 则进行压缩编码

$contents = file_get_contents($filename); // 判断文件是否已经被编码处

$contents = php_strip_whitespace($filename);

// 去除PHP头部和尾部标识

$headerPos = strpos($contents,'<?php');

$footerPos = strrpos($contents,'?>');

$contents = substr($contents, $headerPos + 5, $footerPos -

$headerPos);

$encode = base64_encode(gzdeflate($contents)); // 开始编码

$encode = '<?php'." eval(gzinflate(base64_decode("."'".

$encode."'"."))); ?>";

return file_put_contents($filename, $encode);

}

return false;

}

调用此函数:

$filename = 'result1.php';

encode_file_contents($filename);

echo "OK,加密完成!";

?>

3

测试是否加密成功:文件名为result1.php,运行代码

4

运行成功。

‘伍’ 怎么对PHP文件加密 - 技术问答

php的所有加密,都需要对应解密的,这个是php语言(解释语言)特性决定的。你可以考虑使用eaccelerator进行加密,这个有加密跟加速的功能,使用方式google一下就出来了

‘陆’ php excel加密的实现方法有什么

PHP中的加密方式有如下几种
1. MD5加密

string md5 ( string $str [, bool $raw_output = false ] )
参数
str -- 原始字符串。
raw_output -- 如果可选的 raw_output 被设置为 TRUE,那么 MD5 报文摘要将以16字节长度的原始二进制格式返回。
这是一种不可逆加密,执行如下的代码
$password = ‘123456‘;
echo md5($password);
得到结果是
2. Crype加密
string crypt ( string $str [, string $salt ] )
crypt() 返回一个基于标准 UNIX DES 算法或系统上其他可用的替代算法的散列字符串。
参数
str -- 待散列的字符串。
salt -- 可选的盐值字符串。如果没有提供,算法行为将由不同的算法实现决定,并可能导致不可预料的结束。
这是也一种不可逆加密,执行如下的代码
代码如下:
$password = ‘123456‘;
$salt = "test";// 只取前两个
echo crypt($password, $salt);
得到的结果是teMGKvBPcptKo
使用自动盐值的例子如下:
代码如下:
$password = crypt(‘mypassword‘); // 自动生成盐值
/* 你应当使用 crypt() 得到的完整结果作为盐值进行密码校验,以此来避免使用不同散列算法导致的问题。(如上所述,基于标准 DES 算法的密码散列使用 2 字符盐值,但是基于 MD5 算法的散列使用 12 个字符盐值。)*/
if (crypt(‘mypassword‘, $password) == $password) {
echo "Password verified!";
}
执行结果是输出 Password verified!
以不同散列类型使用 crypt()的例子如下:
代码如下:
if (CRYPT_STD_DES == 1) {
echo ‘Standard DES: ‘ . crypt(‘rasmuslerdorf‘, ‘rl‘) . "\n";
}
if (CRYPT_EXT_DES == 1) {
echo ‘Extended DES: ‘ . crypt(‘rasmuslerdorf‘, ‘_J9..rasm‘) . "\n";
}
if (CRYPT_MD5 == 1) {
echo ‘MD5: ‘ . crypt(‘rasmuslerdorf‘, ‘$1$rasmusle$‘) . "\n";
}
if (CRYPT_BLOWFISH == 1) {
echo ‘Blowfish: ‘ . crypt(‘rasmuslerdorf‘, ‘$2a$07$usesomesillystringforsalt$‘) . "\n";
}
if (CRYPT_SHA256 == 1) {
echo ‘SHA-256: ‘ . crypt(‘rasmuslerdorf‘, ‘$5$rounds=5000$usesomesillystringforsalt$‘) . "\n";
}
if (CRYPT_SHA512 == 1) {
echo ‘SHA-512: ‘ . crypt(‘rasmuslerdorf‘, ‘$6$rounds=5000$usesomesillystringforsalt$‘) . "\n";
}
其结果如下
Standard DES: rl.3StKT.4T8M
Extended DES: _J9..rasmBYk8r9AiWNc
MD5: $1$rasmusle$rISCgZzpwk3UhDidwXvin0
Blowfish: $2a$07$./U9C8sBjqp8I90dH6hi
SHA-256: $5$rounds=5000$usesomesillystri$/Tp.6
SHA-512: $6$rounds=5000$usesomesillystri$.S5KPgErtP/EN5mcO.ChWQW21
在 crypt() 函数支持多重散列的系统上,下面的常量根据相应的类型是否可用被设置为 0 或 1:
CRYPT_STD_DES - 基于标准 DES 算法的散列使用 "./0-9A-Za-z" 字符中的两个字符作为盐值。在盐值中使用非法的字符将导致 crypt() 失败。
CRYPT_EXT_DES - 扩展的基于 DES 算法的散列。其盐值为 9 个字符的字符串,由 1 个下划线后面跟着 4 字节循环次数和 4 字节盐值组成。它们被编码成可打印字符,每个字符 6 位,有效位最少的优先。0 到 63 被编码为 "./0-9A-Za-z"。在盐值中使用非法的字符将导致 crypt() 失败。
CRYPT_MD5 - MD5 散列使用一个以 $1$ 开始的 12 字符的字符串盐值。
CRYPT_BLOWFISH - Blowfish 算法使用如下盐值:“$2a$”,一个两位 cost 参数,“$” 以及 64 位由 “./0-9A-Za-z” 中的字符组合而成的字符串。在盐值中使用此范围之外的字符将导致 crypt() 返回一个空字符串。两位 cost 参数是循环次数以 2 为底的对数,它的范围是 04-31,超出这个范围将导致 crypt() 失败。
CRYPT_SHA256 - SHA-256 算法使用一个以 $5$ 开头的 16 字符字符串盐值进行散列。如果盐值字符串以 “rounds=$” 开头,N 的数字值将被用来指定散列循环的执行次数,这点很像 Blowfish 算法的 cost 参数。默认的循环次数是 5000,最小是 1000,最大是 999,999,999。超出这个范围的 N 将会被转换为最接近的值。
CRYPT_SHA512 - SHA-512 算法使用一个以 $6$ 开头的 16 字符字符串盐值进行散列。如果盐值字符串以 “rounds=$” 开头,N 的数字值将被用来指定散列循环的执行次数,这点很像 Blowfish 算法的 cost 参数。默认的循环次数是 5000,最小是 1000,最大是 999,999,999。超出这个范围的 N 将会被转换为最接近的值。
3. Sha1加密

string sha1 ( string $str [, bool $raw_output = false ] )
参数
str -- 输入字符串。
raw_output -- 如果可选的 raw_output 参数被设置为 TRUE,那么 sha1 摘要将以 20 字符长度的原始格式返回,否则返回值是一个 40 字符长度的十六进制数字。
这是也一种不可逆加密,执行如下代码:
$password = ‘123456‘;
echo sha1($password);
得到的结果是
以上几种虽然是不可逆加密,但是也可以根据查字典的方式去解密。如下的地址中就提供了可以将上面的加密结果解密出来的功能。
http://www.cmd5.com/
那大家是不是加了就算加了密,也没用啊,其实不然,只要你的加密足够复杂,被破解出的可能性就越小,比如用以上三种加密方式混合加密,之后我会推荐给大家一个php的加密库。
4. URL加密
string urlencode ( string $str )
此函数便于将字符串编码并将其用于 URL 的请求部分,同时它还便于将变量传递给下一页。
返回字符串,此字符串中除了 -_. 之外的所有非字母数字字符都将被替换成百分号(%)后跟两位十六进制数,空格则编码为加号(+)。此编码与 WWW 表单 POST 数据的编码方式是一样的,同时与 application/x-www-form-urlencoded 的媒体类型编码方式一样。由于历史原因,此编码在将空格编码为加号(+)方面与 RFC1738 编码不同。
string urldecode ( string $str )
解码给出的已编码字符串中的任何 %##。 加号(‘+‘)被解码成一个空格字符。
这是一种可逆加密,urlencode方法用于加密,urldecode方法用于解密,执行如下代码:
$url = ‘http://www.xxx.com/CraryPrimitiveMan/‘;
$encodeUrl = urlencode($url);
echo $encodeUrl . "\n";// 如果是在网页上展示的,就将\n修改为

echo urldecode($encodeUrl);
得到的结果如下
http%3A%2F%2Fwww.xxx.com%2FCraryPrimitiveMan%2F
http://www.xxx.com/CraryPrimitiveMan/
基于RFC 3986的加密URL的方法如下:
代码如下:
function myUrlEncode($string) {
$entities = array(‘%21‘, ‘%2A‘, ‘%27‘, ‘%28‘, ‘%29‘, ‘%3B‘, ‘%3A‘, ‘%40‘, ‘%26‘, ‘%3D‘, ‘%2B‘, ‘%24‘, ‘%2C‘, ‘%2F‘, ‘%3F‘, ‘%25‘, ‘%23‘, ‘%5B‘, ‘%5D‘);
$replacements = array(‘!‘, ‘*‘, "‘", "(", ")", ";", ":", "@", "&", "=", "+", "$", ",", "/", "?", "%", "#", "[", "]");
return str_replace($entities, $replacements, urlencode($string));
}
5. Base64信息编码加密

string base64_encode ( string $data )
使用 base64 对 data 进行编码。
设计此种编码是为了使二进制数据可以通过非纯 8-bit 的传输层传输,例如电子邮件的主体。
Base64-encoded 数据要比原始数据多占用 33% 左右的空间。
string base64_decode ( string $data [, bool $strict = false ] )
对 base64 编码的 data 进行解码。
参数
data -- 编码过的数据。
strict -- 如果输入的数据超出了 base64 字母表,则返回 FALSE。
执行如下代码:
代码如下:
$name = ‘CraryPrimitiveMan‘;
$encodeName = base64_encode($name);
echo $encodeName . "\n";
echo base64_decode($encodeName);
其结果如下
代码如下:
Q3JhcnlQcmltaXRpdmVNYW4=
CraryPrimitiveMan
推荐phpass

经 phpass 0.3 测试,在存入数据库之前进行哈希保护用户密码的标准方式。 许多常用的哈希算法如 md5,甚至是 sha1 对于密码存储都是不安全的, 因为骇客能够使用那些算法轻而易举地破解密码。
对密码进行哈希最安全的方法是使用 bcrypt 算法。开源的 phpass 库以一个易于使用的类来提供该功能。
代码如下:
<?php
// Include phpass 库
require_once(‘phpass-03/PasswordHash.php‘)
// 初始化散列器为不可移植(这样更安全)
$hasher = new PasswordHash(8, false);
// 计算密码的哈希值。$hashedPassword 是一个长度为 60 个字符的字符串.
$hashedPassword = $hasher->HashPassword(‘my super cool password‘);
// 你现在可以安全地将 $hashedPassword 保存到数据库中!
// 通过比较用户输入内容(产生的哈希值)和我们之前计算出的哈希值,来判断用户是否输入了正确的密码
$hasher->CheckPassword(‘the wrong password‘, $hashedPassword); // false
$hasher->CheckPassword(‘my super cool password‘, $hashedPassword); // true
?>

‘柒’ 如何给php代码加密

前台加密 后台接收到后 在和盐值拼接 在加密 存入数据库 我用md5举例
前台:md5(pwd); //前台找一个js加密扩展就行
后台:
$salt = mt_rand(100000,999999); //随机盐值
$pwd = md5($_GET('pwd').$salt); //这样双重加密后入库了
登录验证时 前台也记得加密哦

‘捌’ php 怎么用zend加密

可以加密就可以解密。

解密ZEND加密后的PHP文件:

zend加密php文件解密工具Dezender可以做到。

1、下载Dezender.zip

2、解压到盘里面,最好不要有中文路径,比如解压到 I:Dezender 里面,修改I:DezenderPHP5PHP5php.ini文件,修改里面的文件路径。

‘玖’ php文件加密,用什么方法加密的

php代码加密通常采用的都是zend加密

如果你想运行加密的网站程序,可以使用纯绿色集成环境phpwamp8.1.8.8,里面默认自带php7等6个版本,基本都集成了解密组件,完美运行各加密程序,phpwamp还支持自定义设置php版本,官方提供700个php版本随你切换。

‘拾’ PHP中给源代码加密的几种方法

<?php
function encode_file_contents($filename) {
$type=strtolower(substr(strrchr($filename,'.'),1));
if ('php' == $type && is_file($filename) && is_writable($filename)) { // 如果是PHP文件 并且可写 则进行压缩编码
$contents = file_get_contents($filename); // 判断文件是否已经被编码处理
$contents = php_strip_whitespace($filename);

// 去除PHP头部和尾部标识
$headerPos = strpos($contents,'<?php');
$footerPos = strrpos($contents,'?>');
$contents = substr($contents, $headerPos + 5, $footerPos - $headerPos);
$encode = base64_encode(gzdeflate($contents)); // 开始编码
$encode = '<?php'."\n eval(gzinflate(base64_decode("."'".$encode."'".")));\n\n?>";

return file_put_contents($filename, $encode);
}
return false;
}

//调用函数
$filename = 'dam.php';
encode_file_contents($filename);
echo "OK,加密完成!"
?>

<?php

function RandAbc($length = "") { // 返回随机字符串
$str = "";
return str_shuffle($str);
}

$filename = 'index.php'; //要加密的文件
$T_k1 = RandAbc(); //随机密匙1
$T_k2 = RandAbc(); //随机密匙2
$vstr = file_get_contents($filename);
$v1 = base64_encode($vstr);
$c = strtr($v1, $T_k1, $T_k2); //根据密匙替换对应字符。
$c = $T_k1.$T_k2.$c;
$q1 = "O00O0O";
$q2 = "O0O000";
$q3 = "O0OO00";
$q4 = "OO0O00";
$q5 = "OO0000";
$q6 = "O00OO0";
$s = '$'.$q6.'=urldecode("%6E1%7A%62%2F%6D%615%5C%76%740%6928%2D%70%78%75%71%79%2A6%6C%72%6B%64%679%5F%65%68%63%73%77%6F4%2B%6637%6A");$'.$q1.'=$'.$q6.'{3}.$'.$q6.'{6}.$'.$q6.'{33}.$'.$q6.'{30};$'.$q3.'=$'.$q6.'{33}.$'.$q6.'{10}.$'.$q6.'{24}.$'.$q6.'{10}.$'.$q6.'{24};$'.$q4.'=$'.$q3.'{0}.$'.$q6.'{18}.$'.$q6.'{3}.$'.$q3.'{0}.$'.$q3.'{1}.$'.$q6.'{24};$'.$q5.'=$'.$q6.'{7}.$'.$q6.'{13};$'.$q1.'.=$'.$q6.'{22}.$'.$q6.'{36}.$'.$q6.'{29}.$'.$q6.'{26}.$'.$q6.'{30}.$'.$q6.'{32}.$'.$q6.'{35}.$'.$q6.'{26}.$'.$q6.'{30};eval($'.$q1.'("'.base64_encode('$'.$q2.'="'.$c.'";eval(\'?>\'.$'.$q1.'($'.$q3.'($'.$q4.'($'.$q2.',$'.$q5.'*2),$'.$q4.'($'.$q2.',$'.$q5.',$'.$q5.'),$'.$q4.'($'

阅读全文

与PHP在哪里调用加密方法相关的资料

热点内容
砍头白熊快速发根方法 浏览:836
xp键盘的右键在哪里设置方法 浏览:913
儿童预防拐骗都有哪些方法 浏览:218
改造风水最佳方法 浏览:166
草菇高温种植方法 浏览:111
化学方法鉴别苯酚过程 浏览:57
防护防火的方法有哪些 浏览:306
用毫米测量的方法 浏览:117
暖气片水不热有什么好方法 浏览:119
充气床充气泵使用方法 浏览:984
苹果6s手机圆圈键在哪里设置方法 浏览:986
拍摄狗的正确方法 浏览:292
预测性咨询哪些有效的方法 浏览:271
喝调制奶的正确方法 浏览:172
新冠的检测方法有几种 浏览:532
管理的各种研究方法特点 浏览:904
制板方法有哪些 浏览:518
古代文学方法论研究 浏览:846
如何展现神秘感的方法 浏览:16
关于抑郁症的问题和解决方法 浏览:974