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。