phpjson数据加密 php的加密函数

php 使用json加密的一个问题用正则替换
$string='{"id":"2","username":"test","email":"123@qq.com","logintime":null,"loginip":null,"status":"0"}';
$new_str=preg_replace('/"([a-z]+)"\:/','\1:',$string);
输出$new_str是去掉了key键的引号:
{id:"2",username:"test",email:"123@qq.com",logintime:null,loginip:null,status:"0"}
php解析json数组问题 。$a = json_decode('{"status":0,"total":1,"size":1,"contents":[{"title":"111","location":[113.11509,23.012777],"city":"\u4f5b\u5c71\u5e02","create_time":1385386545,"geotable_id":38432,"address":"\u5e7f\u4e1c\u7701\u4f5b\u5c71\u5e02\u7985\u57ce\u533a\u6c7e\u6c5f\u5357\u8def8\u53f7","province":"\u5e7f\u4e1c\u7701","district":"\u7985\u57ce\u533a","map_id":"1","uid":42504634,"coord_type":3,"type":0,"distance":370,"weight":0}]}',true);
json_decode第二个参数true
解析出来就是array(4) {["status"]=int(0)["total"]=int(1)["size"]=int(1)["contents"]=array(1) {[0]=array(14) {["title"]=string(3) "111"["location"]=array(2) {[0]=float(113.11509)[1]=float(23.012777)}["city"]=string(9) "佛山市"["create_time"]=int(1385386545)["geotable_id"]=int(38432)["address"]=string(43) "广东省佛山市禅城区汾江南路8号"["province"]=string(9) "广东省"["district"]=string(9) "禅城区"["map_id"]=string(1) "1"["uid"]=int(42504634)["coord_type"]=int(3)["type"]=int(0)["distance"]=int(370)["weight"]=int(0)}} }
这样的数组会取内容了吧
php代码怎么加密最好,不能破解的那种在使用PHP开发Web应用的中,很多的应用都会要求用户注册 , 而注册的时候就需要phpjson数据加密我们对用户的信息进行处理了,最常见的莫过于就是邮箱和密码了,本文意在讨论对密码的处理:也就是对密码的加密处理 。
MD5
相信很多PHP开发者在最先接触PHP的时候,处理密码的首选加密函数可能就是MD5了,我当时就是这样的:
$password = md5($_POST["password"]);
上面这段代码是不是很熟悉?然而MD5的加密方式目前在PHP的江湖中貌似不太受欢迎了,因为它的加密算法实在是显得有点简单了,而且很多破解密码的站点都存放了很多经过MD5加密的密码字符串,所以这里我是非常不提倡还在单单使用MD5来加密用户的密码的 。
SHA256 和 SHA512
其实跟前面的MD5同期的还有一个SHA1加密方式的,不过也是算法比较简单,所以这里就一笔带过吧 。而这里即将要说到的SHA256 和 SHA512都是来自于SHA2家族的加密函数,看名字可能phpjson数据加密你就猜的出来了,这两个加密方式分别生成256和512比特长度的hash字串 。
他们的使用方法如下:
?php
$password = hash("sha256", $password);
PHP内置了hash()函数 , 你只需要将加密方式传给hash()函数就好了 。你可以直接指明sha256, sha512, md5, sha1等加密方式 。
盐值
在加密的过程,我们还有一个非常常见的小伙伴:盐值 。对,我们在加密的时候其实会给加密的字符串添加一个额外的字符串,以达到提高一定安全的目的:
?php
function generateHashWithSalt($password) {$intermediateSalt = md5(uniqid(rand(), true));$salt = substr($intermediateSalt, 0, 6);
return hash("sha256", $password . $salt);}
Bcrypt
如果让我来建议一种加密方式的话,Bcrypt可能是我给你推荐的最低要求了,因为我会强烈推荐你后面会说到的Hashing API,不过Bcrypt也不失为一种比较不错的加密方式了 。
?php
function generateHash($password) {
if (defined("CRYPT_BLOWFISH")CRYPT_BLOWFISH) {$salt = '$2y$11$' . substr(md5(uniqid(rand(), true)), 0, 22);return crypt($password, $salt);
}
}
Bcrypt 其实就是Blowfish和crypt()函数的结合,我们这里通过CRYPT_BLOWFISH判断Blowfish是否可用 , 然后像上面一样生成一个盐值,不过这里需要注意的是,crypt()的盐值必须以$2a$或者$2y$开头,详细资料可以参考下面的链接:

推荐阅读