Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Encryption 用JavaScript加密字符串,用RSA技术用PHP解密_Encryption_Cryptography_Php_Javascript - Fatal编程技术网

Encryption 用JavaScript加密字符串,用RSA技术用PHP解密

Encryption 用JavaScript加密字符串,用RSA技术用PHP解密,encryption,cryptography,php,javascript,Encryption,Cryptography,Php,Javascript,我试图用JavaScript加密一些文本,然后将其发送到PHP(等:使用Ajax)解密并保存(等:在MySQL中) 以下是我目前的代码: 在JavaScript中: $dataPost = $_POST('dt'); function ConvertFromURL($data) { // Converts $data to original form // etc: Replaces 'plus', 'slash', 'equal' with '+', '/', '=' } f

我试图用JavaScript加密一些文本,然后将其发送到PHP(等:使用Ajax)解密并保存(等:在MySQL中)

以下是我目前的代码:

在JavaScript中:

$dataPost = $_POST('dt');

function ConvertFromURL($data) {
    // Converts $data to original form
    // etc: Replaces 'plus', 'slash', 'equal' with '+', '/', '='
}
function ReturnData($data) {
    // Sends $data back in JavaScript as an answer to Ajax
}

$privateKey = '-----BEGIN RSA PRIVATE KEY-----
MIICXQIBAAKBgQDlOJu6TyygqxfWT7eLtGDwajtNFOb9I5XRb6khyfD1Yt3YiCgQ
WMNW649887VGJiGr/L5i2osbl8C9+WJTeucF+S76xFxdU6jE0NQ+Z+zEdhUTooNR
aY5nZiu5PgDB0ED/ZKBUSLKL7eibMxZtMlUDHjm4gwQco1KRMDSmXSMkDwIDAQAB
AoGAfY9LpnuWK5Bs50UVep5c93SJdUi82u7yMx4iHFMc/Z2hfenfYEzu+57fI4fv
xTQ//5DbzRR/XKb8ulNv6+CHyPF31xk7YOBfkGI8qjLoq06V+FyBfDSwL8KbLyeH
m7KUZnLNQbk8yGLzB3iYKkRHlmUanQGaNMIJziWOkN+N9dECQQD0ONYRNZeuM8zd
8XJTSdcIX4a3gy3GGCJxOzv16XHxD03GW6UNLmfPwenKu+cdrQeaqEixrCejXdAF
z/7+BSMpAkEA8EaSOeP5Xr3ZrbiKzi6TGMwHMvC7HdJxaBJbVRfApFrE0/mPwmP5
rN7QwjrMY+0+AbXcm8mRQyQ1+IGEembsdwJBAN6az8Rv7QnD/YBvi52POIlRSSIM
V7SwWvSK4WSMnGb1ZBbhgdg57DXaspcwHsFV7hByQ5BvMtIduHcT14ECfcECQATe
aTgjFnqE/lQ22Rk0eGaYO80cc643BXVGafNfd9fcvwBMnk0iGX0XRsOozVt5Azil
psLBYuApa66NcVHJpCECQQDTjI2AQhFc1yRnCU/YgDnSpJVm1nASoRUnU8Jfm3Oz
uku7JUXcVpt08DFSceCEX9unCuMcT72rAQlLpdZir876
-----END RSA PRIVATE KEY-----';

openssl_private_decrypt(ConvertFromURL($dataPost), $decryptedWord, $privateKey);

ReturnData(base64_encode($decryptedWord));
我正在使用此库进行加密:

在PHP中:

$dataPost = $_POST('dt');

function ConvertFromURL($data) {
    // Converts $data to original form
    // etc: Replaces 'plus', 'slash', 'equal' with '+', '/', '='
}
function ReturnData($data) {
    // Sends $data back in JavaScript as an answer to Ajax
}

$privateKey = '-----BEGIN RSA PRIVATE KEY-----
MIICXQIBAAKBgQDlOJu6TyygqxfWT7eLtGDwajtNFOb9I5XRb6khyfD1Yt3YiCgQ
WMNW649887VGJiGr/L5i2osbl8C9+WJTeucF+S76xFxdU6jE0NQ+Z+zEdhUTooNR
aY5nZiu5PgDB0ED/ZKBUSLKL7eibMxZtMlUDHjm4gwQco1KRMDSmXSMkDwIDAQAB
AoGAfY9LpnuWK5Bs50UVep5c93SJdUi82u7yMx4iHFMc/Z2hfenfYEzu+57fI4fv
xTQ//5DbzRR/XKb8ulNv6+CHyPF31xk7YOBfkGI8qjLoq06V+FyBfDSwL8KbLyeH
m7KUZnLNQbk8yGLzB3iYKkRHlmUanQGaNMIJziWOkN+N9dECQQD0ONYRNZeuM8zd
8XJTSdcIX4a3gy3GGCJxOzv16XHxD03GW6UNLmfPwenKu+cdrQeaqEixrCejXdAF
z/7+BSMpAkEA8EaSOeP5Xr3ZrbiKzi6TGMwHMvC7HdJxaBJbVRfApFrE0/mPwmP5
rN7QwjrMY+0+AbXcm8mRQyQ1+IGEembsdwJBAN6az8Rv7QnD/YBvi52POIlRSSIM
V7SwWvSK4WSMnGb1ZBbhgdg57DXaspcwHsFV7hByQ5BvMtIduHcT14ECfcECQATe
aTgjFnqE/lQ22Rk0eGaYO80cc643BXVGafNfd9fcvwBMnk0iGX0XRsOozVt5Azil
psLBYuApa66NcVHJpCECQQDTjI2AQhFc1yRnCU/YgDnSpJVm1nASoRUnU8Jfm3Oz
uku7JUXcVpt08DFSceCEX9unCuMcT72rAQlLpdZir876
-----END RSA PRIVATE KEY-----';

openssl_private_decrypt(ConvertFromURL($dataPost), $decryptedWord, $privateKey);

ReturnData(base64_encode($decryptedWord));
现在PHP的答案每次都是空的。有什么办法让这一切顺利吗

谢谢你抽出时间

使用HTTPS

由于您没有任何信任锚,您所做的将永远无法保护您免受主动攻击(MitM),并且您很可能会犯一些愚蠢的错误,使其不安全


无论哪种方式,您都不能直接使用RSA加密超过几百个字节的数据。因此,您必须安全地生成随机对称密钥(在JavaScript中正确地生成该密钥并不容易),在安全分组密码模式下使用安全对称密码(例如AES)加密数据,然后使用RSA加密对称密钥。学习如何“正确”地完成这项工作要比真正正确地完成这项工作花费更多的时间,也就是说,配置SSL。

只是好奇——这有什么好处?如果你在一个安全的连接上,窥探是不可能的。如果你在一个不安全的连接上,那么绝对不能保证你运行的是正确的JavaScript。。。实际上是SSL,因为它比您尝试执行的任何操作都要省时。没有安全连接。我试图通过互联网保护传输的数据,这种方式对我来说更容易理解。如果你有一个更安全或更容易的方式,我听到:)@约翰,你真的听到了吗?因为我已经提到了SSL.Adnan没有理由这样说。。如果你觉得这不合理,就不要麻烦了。无论如何,谢谢你的回答很有启发性,但我之所以尝试这样做,是为了对我对服务器的站点请求(这太多了!)有一个最低的安全性。我认为SSL对于我期望的通信量来说有点重。没有随机键有没有办法做到这一点?或者至少有比SSL更快的其他方法?SSL的主要负载来自必须执行的私钥操作。SSL在每个连接建立过程中最多执行一次此操作,由于HTTP保持活动,一个连接被重用用于多个HTTP请求,并且由于SSL会话处理,同一个SSL会话可以跨多个连接重用。如果要为用户读取的每个页面调用openssl\u private\u decrypt一次,那么它可能比SSL更昂贵(负载方面)。顺便说一句,SSL不会造成太多负载。我的旧笔记本电脑的一个内核每秒可以处理100次SSL握手。@John为了保证页面的安全,您需要以可信的方式加载每一个JS片段(包括可能包含脚本的HTML)。唯一的方法(我知道/可以想象)是使用SSL。@John:如果您担心SSL的负载,请注意一个重要事项-使用2048位的密钥。(不允许较短,较长将显著增加负载。)