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。