我有一个运行mysql和php的网络服务器,它将数据发送到json字符串。
我有第二个网络服务器,它读取数据然后显示它。
目前一切正常。
我需要在字符串中添加一些敏感数据,所以我想知道使用php加密/解密json的最佳方法是什么?
有人可以帮忙吗??
答案 0 :(得分:14)
我一直很喜欢MCRYPT
//Key
$key = 'SuperSecretKey';
//To Encrypt:
$encrypted = mcrypt_encrypt(MCRYPT_RIJNDAEL_256, $key, 'I want to encrypt this', MCRYPT_MODE_ECB);
//To Decrypt:
$decrypted = mcrypt_decrypt(MCRYPT_RIJNDAEL_256, $key, $encrypted, MCRYPT_MODE_ECB);
如果那是你正在寻找的东西。它会将JSON视为一个字符串,然后在解密之后,你必须执行json_decode()
或者你正在做的任何事情。
答案 1 :(得分:9)
我敢打赌,最好的方法是使用SSL(HTTPS),我建议您阅读OWASP Guide,尤其是How-To section。
答案 2 :(得分:5)
这实际上取决于数据的敏感程度。但根据我的经验,简单的PHP加密通常可以解决问题。我通常会在将json数据字段编码为json字符串之前对其进行加密。
以下是加密部分的代码。
$ key ='密码到(en / de)crypt'; $ string ='要加密的字符串'; //注意空格
加密:
$encrypted = base64_encode(mcrypt_encrypt(MCRYPT_RIJNDAEL_256, md5($key), $string, MCRYPT_MODE_CBC, md5(md5($key))));
要解密:
$decrypted = rtrim(mcrypt_decrypt(MCRYPT_RIJNDAEL_256, md5($key), base64_decode($encrypted), MCRYPT_MODE_CBC, md5(md5($key))), "\0");
但是,你应该总是哈希(MD5,SHA1)密码,最好加一些盐。
答案 3 :(得分:1)
在服务器上存储私钥并使用DES加密;这是一种双向算法。
编辑:
根据评论,似乎我误解了这个问题。我的假设是OP希望像在电子邮件中那样在互联网上发送加密数据,然后在以后获取数据并能够解密它。在提交答案之前,我一定会在将来通过评论澄清。
答案 4 :(得分:0)