广告
返回顶部
首页 > 资讯 > 后端开发 > PHP编程 >php rsa加密处理失败怎么办
  • 449
分享到

php rsa加密处理失败怎么办

2023-06-28 04:06:37 449人浏览 泡泡鱼
摘要

这篇“PHP rsa加密处理失败怎么办”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“php rsa加密处理失败怎么办”文章吧

这篇“PHP rsa加密处理失败怎么办”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“php rsa加密处理失败怎么办”文章吧。

关于php rsa加密处理

最近刚好需要跟一个第三方系统对接几个接口,对方要求 post 数据需要 rsa 加密,于是百度搜了一下 php 关于 rsa 加密的处理,然后大家可能就会跟我一样搜出以下示例:

          public function publicEncrypt($data = '') {                if (!is_string($data)) {            return null;                }                return openssl_public_encrypt($data, $encrypted, $this->_getPublicKey()) ? base64_encode($encrypted) : null;    }

于是开开心心的复制到自己项目稍微修改修改后测试,简简单单传几个字符串进去:

<?php$string = '基督教解决基督教解决决';$ret = publicEncrypt($string);var_dump($ret);    function publicEncrypt($data = '') {        $publicKey = 'MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEaiX1bIq02AFypLOJ4byShfo6+D6pj0rQrdAtZ8Bb2Z4YwdCZS5vlEduBiVCZSKfF70M0nk4gMQhAKcgwqWxgI1/j8OrX401AssfaiXr2JqsAl679s+Xlwe0jppNe1832+3g0YOawDTpAQsUJDu1DpnyGnUz0qeac0/GiAJlXzKUP+/3Db8haDuOkgYrT8A6twGAm7YwIuliieDWDcUS/CQzXGRtwtZQqUJDQsWC1lCML1kRUjbZ2EM2EzyttgHN0SsNryhVLHXSFXpDWbeqQwk36axojGF1lbg/oVQy+BnYJx8pKpTgSwIDAQAB';        $publicKey = "-----BEGIN PUBLIC KEY-----\n" .    Wordwrap($publicKey, 64, "\n", true) .    "\n-----END PUBLIC KEY-----";    if (!is_string($data)) {        return null;            }            return openssl_public_encrypt($data, $encrypted, $publicKey) ? base64_encode($encrypted) : null;}

程序打印:

string(344) "HSqVQbyhmWYrptvgzK+ggqmma88QRFVJerXTrZ+RpYqhZr/Dr9au9wxX+aAYy1wRh0eBk+fIpU4wkEZs6P5yozf5e/rAAEYUOImTJZcOvZqr89znT3yqaV8ME+vR16FLK5sk3BwgpOWI6X+wBwU2cLnHKDdj9RpYWAYhi/mn8XJj4/srKZbSgAjvzWqZI9gfqiJNdz8kf/MPtQ65cSlAhvh5eByY8cLGfgUXV0dxzWAkwTSPl2faSq3GHsNMXnxwoNjIvqz/IuZavqABNVZCwrZC3ZVb+Op7wF9GxrkIdJYzmHpX/wNn1DPLHUvghtO/WmfN4Jb2ZVzTsneB5B3Z6g=="

看似一切正常,实际项目中对一个比较长的 JSON 字符串进行加密时,发现返回了 null,追溯了一下 openssl_public_encrypt 这个函数此时是返回 false 的,表示加密失败。传入不同长度的字符串测试了几遍后发现字符串长度超过 100 多之后就会出现加密失败的问题,参考了一下对方发来的 java 加密示例

        public static String rsaEncrypt(String data, PublicKey publicKey) throws Exception {        Cipher cipher = Cipher.getInstance(RSA_ALGoRITHM);        cipher.init(Cipher.ENCRYPT_MODE, publicKey);        int inputLen = data.getBytes().length;        ByteArrayOutputStream out = new ByteArrayOutputStream();        int offset = 0;        byte[] cache;        int i = 0;        // 对数据分段加密        while (inputLen - offset > 0) {            if (inputLen - offset > MAX_ENCRYPT_BLOCK) {                cache = cipher.doFinal(data.getBytes(), offset, MAX_ENCRYPT_BLOCK);            } else {                cache = cipher.doFinal(data.getBytes(), offset, inputLen - offset);            }            out.write(cache, 0, cache.length);            i++;            offset = i * MAX_ENCRYPT_BLOCK;        }        byte[] encryptedData = out.toByteArray();        out.close();        // 加密后的字符串        return Base64.getEncoder().encodeToString(encryptedData);    }

发现他们是需要对要加密的字符串进行一个分割操作,于是有了以下修改后的版本:

 public function publicEncrypt($data = '') {    if (!is_string($data)) {        return null;    }    $dataLength = mb_strlen($data);    $offet = 0;    $length = 128;    $i = 0;    $string = '';    while ($dataLength - $offet > 0) {        if ($dataLength - $offet > $length) {            $str = mb_substr($data, $offet, $length);        } else {            $str = mb_substr($data, $offet, $dataLength - $offet);        }        $encrypted = '';        openssl_public_encrypt($str,$encrypted, $this->rsaPublicKey, OPENSSL_PKCS1_OAEP_PADDING);//这个OPENSSL_PKCS1_OAEP_PADDING是对方要求要用这种padding方式        $string .= $encrypted;        $i ++;        $offet = $i * $length;    }    return base64_encode($string);}

目前测试没有再发现加密失败问题~问题解决

以上就是关于“php rsa加密处理失败怎么办”这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注编程网PHP编程频道。

--结束END--

本文标题: php rsa加密处理失败怎么办

本文链接: https://www.lsjlt.com/news/316522.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • php rsa加密处理失败怎么办
    这篇“php rsa加密处理失败怎么办”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“php rsa加密处理失败怎么办”文章吧...
    99+
    2023-06-28
  • php 加入环境变量失败怎么办
    本文操作环境:Windows10系统、PHP7.3版、DELL G3电脑php 加入环境变量失败怎么办?windows10 cmd命令行添加php环境变量无效问题解决集成环境:phpStudy也可单独下载php:https://window...
    99+
    2015-08-14
    php
  • php加入环境变量失败该怎么处理
    今天就跟大家聊聊有关php加入环境变量失败该怎么处理,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。php加入环境变量失败的解决办法:1、找到环境变量,选择“Path->编辑”;...
    99+
    2023-06-26
  • mysql找回密码失败怎么办
    mysql密码找回失败的解决方法首先,在mysql安装目标中,查找到my.ini配置文件;my.ini配置文件查找到后,使用记事本打开;my.ini配置文件打开后,在文件中的[mysqld]下添加以下配置,跳过mysql用户认证;[mysq...
    99+
    2022-10-19
  • php查询失败怎么办
    本文操作环境:Windows7系统、PHP7.1版、DELL G3电脑php查询失败怎么办?具体问题描述如下:php+mysql! 连接成功,但是查询失败! 详细代码如下: <php $startTime=microtime (tru...
    99+
    2014-11-25
    php
  • php insert into失败怎么办
    本教程操作环境:Windows7系统、PHP8.1版、Dell G3电脑。php insert into失败怎么办?解决|php insert into 插入失败 |Incorrect string value: '\xE5\x88...
    99+
    2022-11-25
    insert into php
  • mysql添加连接失败怎么办
    mysql添加连接失败的原因:mysql为开启远程访问权限,只允许本地访问,导致添加连接失败解决方法:首先,在命令行中启动MySQL服务;service mysql start  MySQL服务启动后,在命令行中输入mysql的用户名和密码...
    99+
    2022-10-21
  • mysql加载驱动失败怎么办
    mysql加载驱动失败的解决方法:首先,进入mysql安装目录,并在安装目录中查找到libmysql.dll文件;libmysql.dll文件查找到后,将文件拷贝到相应驱动安装目录中的bin目录下即可;...
    99+
    2022-10-19
  • mysql添加用户失败怎么办
    mysql中添加用户失败的原因:用户添加后没有对mysql的权限进行刷新,导致用户没有生效解决方法:首先,在命令行中启动MySQL服务;service mysql start  MySQL服务启动后,在命令行中输入mysql的用户名和密码登...
    99+
    2022-10-24
  • php连接mssql失败怎么办
    本文操作环境:windows7系统、PHP5版、DELL G3电脑php连接mssql失败怎么办?关于PHP无法连接MSSQL数据库的解决办法:php 数据库 sql server extension sqlserver 服务器今天接到一个...
    99+
    2021-06-01
    php mssql
  • php调用webservice失败怎么办
    本文操作环境:windows7系统、PHP7.1版、DELL G3电脑php调用webservice失败怎么办?php编写webservice案例、webservice调用失败作为开发者来讲,要想写webservice接口或者调用别人的we...
    99+
    2014-12-17
    php webservice
  • php清除cookie失败怎么办
    本文操作环境:windows7系统、PHP7.1版、DELL G3电脑php清除cookie失败怎么办?php cookie删除不掉原因通过setcookie(name, value, expiration, path, host, sec...
    99+
    2019-10-22
    php cookie
  • php mangaer安装失败怎么办
    本文操作环境:Windows10系统、PHP7.1、Dell G3电脑。php mangaer安装失败怎么办?Windows 10 安装PHP Manager 失败的解决办法首先安装.NET 2.0和.NET 3.5, 在 控制面板---...
    99+
    2014-08-19
    php
  • ajax调用php失败怎么办
    本教程操作环境:windows7系统、PHP8.1版、Dell G3电脑。ajax调用php失败怎么办?ajax请求php报500错误,ajax只能发起GET请求,而不能发POST请求,否则报500错误我是大标题1abc $.ajax({ ...
    99+
    2022-11-01
  • php json_decode解析失败怎么办
    PHP中的json_decode函数可以将一个JSON格式字符串解析为PHP中的数组或对象。但是,有时候当我们在使用json_decode函数时,会遇到解析失败的情况。本文将探讨解析失败的原因及解决方法。解析失败的原因1. JSON格式错误...
    99+
    2023-05-14
  • Webpack dev server热加载失败怎么办
    这篇文章主要介绍了Webpack dev server热加载失败怎么办,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。利用Webpack de...
    99+
    2022-10-19
  • php 移动文件失败怎么办
    本文操作环境:Windows7系统、PHP7.1版、Dell G3电脑。php 移动文件失败怎么办php文件上传,提示移动文件失败?如:<php include("../Include/Conn.php"); in...
    99+
    2020-02-11
    php 移动文件
  • php 中调用 time失败怎么办
    本文操作环境:windows7系统、PHP7.1版、DELL G3电脑php 中调用 time失败怎么办?php中使用time获取到当前小时数不对解决办法:通常是php.ini中的时区timezone设定没有设成中国Asia/Shangha...
    99+
    2016-04-01
    php time
  • php端口链接失败怎么办
    本教程操作环境:windows7系统、PHP8.1版、Dell G3电脑。php端口链接失败怎么办?解决php 访问数据库的 端口异常打开电脑后,同时按住电脑键盘的【开始键】和【R键】,打开电脑的程序运行弹窗。在电脑左下角弹出的程序运行弹窗...
    99+
    2022-11-10
  • SQL Server数据库附加失败怎么办
    这篇文章将为大家详细讲解有关SQL Server数据库附加失败怎么办,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。1、错误3415问题:附加数据库的时候,发现总是附加失败...
    99+
    2022-10-18
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作