php返回数据加密 php如何返回数据给前台

用php将密码存入数据库,用什么方法进行加密?题主你可以使用 md5 或者 sha1 进行初步处理,但为了更加安全,请你同时加上两个 salt , 一个静态 salt , 一个动态的 salt 。以 md5 为例:\x0d\x0a假设通过 POST 传来的密码为 $_POST['password'],在存入 DB 前先进行如下的操作:\x0d\x0a$password = hash('md5', $_POST['password'].$staticSalt.$dynamicSalt);\x0d\x0a\x0d\x0a为了保证动态 salt 的唯一性,可以这样操作:\x0d\x0a$dynamicSalt = hash('md5', microtime());\x0d\x0a\x0d\x0a对于动态的 salt 可以与生成的密码一起保存在 DB 中 , 而静态 salt 则可以直接放在类文件中(例如定义为一个静态属性即可) 。\x0d\x0a首先谢谢题主采纳了我的答案,但是我之前的回答并不是最佳答案,之所以有此加密的想法源于自己所读的源码可能比较老,所以并没使用上较新版本的加密方法,例如 bcrypt等 。\x0d\x0a此外,第二点 , 感谢评论中几位前辈的提点,已经明白设置静态 salt 的意义并不大 , 生成一个较长的动态 salt 已然可以解决问题 。\x0d\x0a\x0d\x0aLZ应该采用加盐HASH 。\x0d\x0a如何“腌制”密码呢?\x0d\x0a=_,=\x0d\x0a正确的格式应该是,用户password 动态的salt\x0d\x0a动态的salt不能像2L所说的,使用microtime,因为时间在某些情况下不够随机 , 而且是可能被猜解的 。\x0d\x0a这里推荐一个我用的加盐HASH\x0d\x0a$salt=base64_encode(mcrypt_create_iv(32,MCRYPT_DEV_RANDOM));\x0d\x0a$password=sha1($register_password.$salt);\x0d\x0a\x0d\x0a解释:\x0d\x0a首先使用mcrypt,产生电脑随机生成的,专门用户加密的随机数函数 。\x0d\x0a第二步,把得到的随机数通过base64加密,使其变长并且不利于猜解 。\x0d\x0a第三步 , 把得出的盐拼接到密码的后面 , 再对其使用sha1进行哈希\x0d\x0a再把password存入到用户的数据库 。\x0d\x0aPS:为何不用静态的salt?没有必要,使用一个动态随机足够长的盐足矣 。\x0d\x0a为何不用MD5?因为长度不够 。\x0d\x0a为何没有使用多次HASH?因为这样反而容易发生碰撞 。\x0d\x0aHASH好之后怎么使用“腌制”好的密码?\x0d\x0a用户注册-提交密码-产生salt-腌制好的密码存入数据库-salt存入数据库 。\x0d\x0a用户登录-提交密码-调用salt接到提交密码的后面-进行HASH-调用之前注册腌制好的密码-对比HASH值是否和这个密码相同
php源码怎么加密一、无需任何PHP扩展的加密
【php返回数据加密 php如何返回数据给前台】 此类加密的代表有 威盾PHP加密专家、PHP在线加密平台、PHP神盾 等 。
此类加密都是以eval函数为核心 , 辅以各式各样的字符串混淆和各种小技巧,来达到加密目的(更准确的说 , 应该算是混淆) 。下面以一个简单的hello world为例来说明此类加密的大体过程 。
?php
echo "hello world";
首先,我们把这段代码变为通过eval执行的
?php
eval('echo "hello world";');
然后 ,我们再进行一些转换,比如说base64编码
?php
eval(base64_decode('ZWNobyAiaGVsbG8gd29ybGQiOw=='));
就这样子,我们的第一个加密过的php代码新鲜出炉了 。。。
上面这个例子非常非常简单,基本上任何有一点php语言基础甚至别的语言基础的人都能轻松的看懂并解密 。因此,我们需要一些方法让这个加密至少看上去不是那么简单 。
二、同时采用多种编码函数
除了刚才提到的base64 , php还有许多内置的编码函数,例如urlencode、gzcompress等 。把这些函数混合使用可以提高解密的复杂度(不是难度),此外还可以使用strtr来制定自己的编码规则 。使用变量来代替函数名 使用特定字符来命名变量
这儿所说的特定字符是一些极其相似的字符 , 如I和1 , 0和O 。试想一下满屏都是O和0组成的变量,并且每一个的名字长度都在10个字符以上 。。。判断文件自身是否被修改
这个功能看似容易,对文件做一下摘要再进行下对比即可知道是否被修改了,但是如何才能在文件内把摘要嵌入进去呢?我没有找到完美的方案,但一个变通的方案还是很容易的 。。。
?php
$code = substr(file_get_contents(__FILE__), 0, -32);
$hash = substr(file_get_contents(__FILE__), -32);
if (md5($code) !== $hash) {
exit('file edited');
}
ACBC41F727E00F85BEB3440D751BB4E3
当然,你可以把这个校验字符串放在别的位置来提高破解的难度 。有了这个,别人想破解你的程序可就得多费一点功夫了 。。。
既然知道了原理,那解密自然也就非常简单了,总体来说就三步:
把eval替换为输出,比如echo 根据编码规则把字符串还原 如果文件未解密完全,从第一步开始继续
当然,实际上的解密过程并没有这么简单,比如说如果加密的时候使用了gzcompress,那得到的数据将会包含一些二进制数据,而采用一般的文本编辑器打开时这些数据都会显示为乱码,并且在保存时丢失部分数据 。解决方法很简单也很麻烦 , 那就是使用二进制(16进制)方式打开、修改和保存 。
php数据库信息加密也是够胆大php返回数据加密的直接酒吧这些信息发布出来php返回数据加密了
php 原来的数据没用MD5加密现在我要更新数据然后使用MD5加密的代码如何写1、先给你原来的数据表增加一个字段,字段名为md5,类型int , 然后运行一个sql语句:
sql语句:update xxx set md5=0将md5这个字段值变成0 , 即表示该数据未MD5保存 。
2、把这段代码保存为rewrite.php并把数据库名修改成你对应的数据库,然后运行 。最好先把你的数据库导出到本地的数据库,然后在本地亲自测试以下这段代码的效果,之后再进行替换 。
?php
/*读取md5为0的前30条数据,由于考虑到PHP有个30秒超时的内置,所以一次更新30条,也可以大大降低对数据库的负担 。*/
$sql=mysql_query("select id,password from XXX where md5=0 order by id desc limit 0,30");
$num=mysql_num_rows($sql);
if($num==0){
echo "所有MD5密码替换完毕 。";//如果数据库里面所有md5=0的记录都变成了md5=1 , 则为修改完毕 。
exit();
}else{
while($row=mysql_fetch_array($sql)){
$md5_pwd=md5($row['password']);//获取原密码,进行MD5化 。
$query=mysql_query("update XXX set md5=1,password='".$md5_pwd."' where id=".$row['id']."");//将该条数据进行更改,把原密码改成MD5加密后的,并把md5值变成1,表示已经该条数据已经MD5加密
unset($query);
}
mysql_free_result($sql);
unset($sql,$row);
echo "meta http-equiv=\"refresh\" content=\"0;url=rewrite.php\""; //该30条记录转化完毕,继续跳到这个页面执行 , 一直循环到替换结束 。
exit();
}
mysql_close();
?
PHP常用加密解密方法作者/上善若水
1.md5(string $str,bool $flag = false);
$flag = false 默认返回32位的16进至数据散列值
$flag = true返回原始流数据
2.sha1($string,$flag = false)
$flag = false 默认返回40位的16进至数据散列值
true返回原始流数据
3.hash(string $algo,srting $str,bool $flag);
$algo : 算法名称 , 可通过hash_algos()函数获取所有hash加密的算法
如:md5,sha1等,采用md5,sha1加密所得结果和1,2两种方式结 果相同 。
$flag = false 默认返回16进至的数据散列值 , 具体长度根据算法不同
而不同 。
true返回原始流数据 。
4.crypt(string $str,$string $salt);
函数返回使用 DES、Blowfish 或 MD5 算法加密的字符串 。
具体算法依赖于PHP检查之后支持的算法和$salt的格式和长度,当 然具体结果也和操作系统有关 。比较结果采用 hash_equals($crypted,crypt($input,$salt));//且salt值相同
Password_verify($str,$crypted);
5.password_hash ( string $str, integer $algo [, array $options ] )
函数返回哈希加密后的密码字符串 , password_hash() 是crypt()的 一个简单封装
$algo : 算法 PASSWORD_DEFAULT,PASSWORD_BCRYPT
$options = [
“cost”=10,//指明算法递归的层数,
“salt”=“xxadasdsad”//加密盐值,即将被遗 弃,采用系统自动随机生成安全性更高
];
使用的算法、cost 和盐值作为哈希的一部分返回
Password_verify($str,$hashed);
6.base64_encode(string $str)
设计此种编码是为了使二进制数据可以通过非纯 8-bit 的传输层 传输,例如电子邮件的主体 。base64_decode(string $encoded)
可以进行解码;
7.mcrypt_encrypt ( string $cipher , string $key , string $data ,
string $mode [, string $iv ] )
mcrypt_decrypt ( string $cipher , string $key , string $crypted ,
string $mode [, string $iv ] )
$ciper:加密算法 , mcrypt_list_algorithms()可以获取该函数所有支持的算法
如MCRYPT_DES(“des”),MCRYPT_RIJNDAEL_128(“rijndael-128”);
$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:
初始向量数据来源 。可选值有: MCRYPT_RAND (系统随机数生成 器), MCRYPT_DEV_RANDOM (从 /dev/random 文件读取数据) 和MCRYPT_DEV_URANDOM (从 /dev/urandom 文件读取数据) 。在 Windows 平台 , PHP 5.3.0 之前的版本中,仅支持 MCRYPT_RAND 。
请注意,在 PHP 5.6.0 之前的版本中,此参数的默认值 为 MCRYPT_DEV_RANDOM 。
Note: 需要注意的是 , 如果没有更多可用的用来产生随机数据的信息, 那么 MCRYPT_DEV_RANDOM 可能进入阻塞状态 。
$data : 要加密的字符串数据
如何对PHP文件进行加密可以使用超级加密3000这款软件试一下,操作比较简单,加密后的数据安全性也比较高
1、下载安装超级加密3000这款软件
2、在需要加密的文件上面右键单击,选择“超级加密”
3.然后在弹出的密码输入窗口中输入需要设置的密码 , 然后点击“确定”
这样的话,一个文件就加密完成了,如果需要对文件夹进行加密的话,加密方法也是一样的哦
php返回数据加密的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于php如何返回数据给前台、php返回数据加密的信息别忘了在本站进行查找喔 。

    推荐阅读