专栏首页胡六娃的博客php使用openssl进行Rsa长数据加密(117)解密(128)

php使用openssl进行Rsa长数据加密(117)解密(128)

最近在使用rsa加密,字符串过长是总是自动截取,百度了发现是rsa对加密字符有长度的限制

写篇文章,省的以后再用时来回找

PHP使用openssl进行Rsa加密,如果要加密的明文太长则会出错,解决方法:加密的时候117个字符加密一次,然后把所有的密文拼接成一个密文;解密的时候需要128个字符解密一下,然后拼接成数据

加密

    /**
     * 加密
     * @param $originalData
     * @return string|void
     */
    /*function encrypt($originalData){

        // if (openssl_private_encrypt($originalData, $encryptData, $this->rsaPrivateKey)) {
        if (openssl_public_encrypt($originalData, $encryptData, $this->rsaPublicKey)) {
            return base64_encode($encryptData);
        } else {
            return false;
        }
    }*/
    function encrypt($originalData){

        $crypto = '';

        foreach (str_split($originalData, 117) as $chunk) {

            openssl_public_encrypt($chunk, $encryptData, $this->rsaPublicKey);

            $crypto .= $encryptData;
        }

        return base64_encode($crypto);
    }

解密

   /**
     * 私钥解密
     * @param $encryptData
     */

    /*function decrypt($encryptData){

        // if (openssl_public_decrypt(base64_decode($encryptData), $decryptData, $this->rsaPublicKey)) {
        if (openssl_private_decrypt(base64_decode($encryptData), $decryptData, $this->rsaPrivateKey)) {

            return $decryptData;

        } else {

            return false;
        }
    }*/
    function decrypt($encryptData){

        $crypto = '';

        foreach (str_split(base64_decode($encryptData), 128) as $chunk) {

            openssl_private_decrypt($chunk, $decryptData, $this->rsaPrivateKey);

            $crypto .= $decryptData;
        }

        return $crypto;
    }

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • laravel-admin自定义列表按钮,并带swal弹窗效果

    用户4973967
  • laravel-admin toastr 消息提醒和播放音频

    应用情景,有新的订单生成,后台进行消息提醒并播放音频(这里用到轮询简单实现):下面附代码

    用户4973967
  • js 数组去重

    用户4973967
  • DEFCON CHINA | 好奇心与探索,追求极客精神的本质

    期盼已久的 DEFCON CHINA 刚刚拉开帷幕,群里就开始讨论这样的话题,因为现场的黑客与极客是在太多了,说不定某个看起来普普通通的人现场小试牛刀,就破解掉...

    FB客服
  • 秒杀视频聊天!HoloLens的新应用直接把你“传输”到对方身边

    VRPinea
  • Facebook 开源的一组 Linux 内核组件与工具

    近日,Facebook 开源了一套解决重要计算集群管理问题的 Linux 内核组件和相关工具,这些项目覆盖了资源控制、资源利用、工作负载隔离、负载均衡、测量和监...

    Debian中国
  • 【Linux】学习笔记(九) Linux 帮助命令 help man info

    韩旭051
  • Robot Movement(机器人移动) 原

    我认为题目本身描述的不是十分清楚,方法需要返回结果,但是结果没有说明是机器人最后的坐标位置,还是最后的坐标位置距离原点的距离。同时,机器人的初始化方向等都没有十...

    HoneyMoose
  • 用 BERT 精简版 DistilBERT+TF.js,提升问答系统 2 倍性能

    特邀博文 / 软件工程师 Pierric Cistac;研究员 Victor Sanh;技术主管 Anthony Moi,来自 Hugging Face

    HyperAI超神经
  • rbd image找到对应osd位置

    Lucien168

扫码关注云+社区

领取腾讯云代金券