rsa - openssl_private_decrypt 在typecho Login.php中不生效

 用户ll08sq9y2x 发布于 2022-11-28 07:13

我对PHP基本不懂,只会java,想在typecho中提交表单的时候添加rsa加密,前台加密没问题,但是数据到后台后openssl_private_decrypt无论无论也不生效不解密,在单独demo运行的时候没有问题,Login.php部分代码(修改后)如下:

security->protect();/**如果已经登录*/if($this->user->hasLogin()){/**直接返回*/$this->response->redirect($this->options->index);}/**初始化验证类*/$validator=newTypecho_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='-----BEGINRSAPRIVATEKEY-----(密匙内容)-----ENDRSAPRIVATEKEY-----';$pi_key=openssl_pkey_get_private($private_key);//这个函数可用来判断私钥是否是可用的,可用返回资源idResourceid//$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);//私钥解密

用户名密码都可以拿到,已经验证过。在demo中,解密后的串在demo的php中正常解密,通用的代码搬到typecho中不生效,请问这是什么原因造成的,如何解决。
运行环境:在win环境下和虚拟机centoslnmp都试过。php5.6-7都试过。

题外:虽然基本不会有人黑我博客,而且replay也挡不住,只是折腾一下.

1 个回答
  • $private_key的问题,粘贴的时候把前面的空格信息也粘贴了,重新弄了一下可以正常解密了。

    2022-11-28 07:41 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有