84669 人学习
152542 人学习
20005 人学习
5487 人学习
7821 人学习
359900 人学习
3350 人学习
180660 人学习
48569 人学习
18603 人学习
40936 人学习
1549 人学习
1183 人学习
32909 人学习
由于不想在做ajax post的时候进行明文传输,想进行js对一个js对象进行加密成字符串或者二进制字符串传输,但是不知道用什么方式加密,并且这种加密后的字符串需要在php端进行解密,解密后最好是一个php的数组,请问大家有这个种需求吗?知道这个怎么实现吗?
ringa_lee
你可以使用非对称加密算法,在浏览器中用公钥加密,在服务器端用私钥解密。jsencrypt项目支持RSA加密,你只需用openssl生成密钥对,然后把公钥放到页面里就行。PHP可以用openssl系列函数解密。
openssl
加密和解密的数据都是字符串,你如果想得到数组,可以在JS这边创建一个对象,然后调一下JSON.stringify再加密。PHP解出来是个JSON字符串,用json_decode函数解开就能得到数组。
JSON.stringify
首先,crypto-js可以解决你的问题。选一个对称加密算法(例如AES-256-CBC),在PHP端用AES+密码加密,在js端用AES+密码解密 —— 但是这么做意义并不大因为你的密码都已经在js代码中明文表示了。
所以如果你的目的是为了不明文传输,建议你从传输层就做好非对称加密,最简单的办法就是把服务器的协议由HTTP换成HTTPs。
你可以使用非对称加密算法,在浏览器中用公钥加密,在服务器端用私钥解密。jsencrypt项目支持RSA加密,你只需用
openssl
生成密钥对,然后把公钥放到页面里就行。PHP可以用openssl系列函数解密。加密和解密的数据都是字符串,你如果想得到数组,可以在JS这边创建一个对象,然后调一下
JSON.stringify
再加密。PHP解出来是个JSON字符串,用json_decode函数解开就能得到数组。首先,crypto-js可以解决你的问题。选一个对称加密算法(例如AES-256-CBC),在PHP端用AES+密码加密,在js端用AES+密码解密 —— 但是这么做意义并不大因为你的密码都已经在js代码中明文表示了。
所以如果你的目的是为了不明文传输,建议你从传输层就做好非对称加密,最简单的办法就是把服务器的协议由HTTP换成HTTPs。