加密/解密json字符串的最佳方法是什么?

时间:2012-02-20 17:26:48

标签: php mysql json

我有一个运行mysql和php的网络服务器,它将数据发送到json字符串。

我有第二个网络服务器,它读取数据然后显示它。

目前一切正常。

我需要在字符串中添加一些敏感数据,所以我想知道使用php加密/解密json的最佳方法是什么?

有人可以帮忙吗??

5 个答案:

答案 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)

使用Open SSL:

http://www.php.net/manual/en/book.openssl.php

如果不可用,您可以生成公钥/私钥对而无需https。