Ich kenne PHP grundsätzlich nicht und kenne mich nur mit Java aus. Ich möchte die RSA-Verschlüsselung beim Senden des Formulars in typecho hinzufügen. Die Front-End-Verschlüsselung ist kein Problem, aber nachdem die Daten an den Hintergrund gesendet wurden, wird openssl_private_decrypt nicht wirksam oder entschlüsseln. Es funktioniert nicht, wenn die Demo alleine ausgeführt wird. Ein Teil des Codes von Login.php (nach der Änderung) lautet wie folgt:
security->protect(); /** 如果已经登录 */ if ($this->user->hasLogin()) { /** 直接返回 */ $this->response->redirect($this->options->index); } /** 初始化验证类 */ $validator = new Typecho_Validate(); $validator->addRule('name', 'required', _t('请输入用户名')); $validator->addRule('password', 'required', _t('请输入密码')); /** 截获验证异常 */ if ($error = $validator->run($this->request->from('name', 'password'))) { Typecho_Cookie::set('__typecho_remember_name', $this->request->name); /** 设置提示信息 */ $this->widget('Widget_Notice')->set($error); $this->response->goBack(); } /** 解密账户密码 **/ $OriginalName = $this->request->name; $OriginalPassword = $this->request->password; // 私钥是放在服务器端的,用以验证和解密客户端经过公钥加密后的信息 $private_key = '-----BEGIN RSA PRIVATE KEY----- (密匙内容) -----END RSA PRIVATE KEY-----'; $pi_key = openssl_pkey_get_private($private_key);//这个函数可用来判断私钥是否是可用的,可用返回资源id Resource id //$pu_key = openssl_pkey_get_public($public_key);//这个函数可用来判断公钥是否是可用的 $decryptName = ""; $decryptPassword = ""; openssl_private_decrypt(base64_decode(base64_encode($OriginalName)),$decryptName,$pi_key);//私钥解密 openssl_private_decrypt(base64_decode($OriginalPassword),$decryptPassword,$pi_key);//私钥解密
Benutzername und Passwort liegen vor und wurden verifiziert. In der Demo wird der entschlüsselte String normal im PHP der Demo entschlüsselt, aber der allgemeine Code wird nicht wirksam, wenn er nach Typecho verschoben wird. Was ist der Grund dafür und wie kann man das Problem lösen?
Betriebsumgebung: Ich habe es sowohl in der Win-Umgebung als auch in der Centos-LNMP der virtuellen Maschine ausprobiert. Versuchte PHP 5.6-7.
Off-Topic: Obwohl grundsätzlich niemand meinen Blog hacken wird und die Wiedergabe nicht gestoppt werden kann, ist es nur ein Fehler.
是
$private_key
的问题,粘贴的时候把前面的空格信息也粘贴了,重新弄了一下可以正常解密了。