• 【PHP】使用openssl进行Rsa长数据加密(117)解密(128)


    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;
        }

    学习留存!

    原文地址:http://blog.csdn.net/leedaning/article/details/51780511

  • 相关阅读:
    Sql Server2012连接不上问题
    WinForm的App.config写法
    (原)centos 防火墙开放端口命令
    Linux下rsync的用法
    Centos7下部署minio
    arthas简单使用
    在Docker中运行MinIO单点模式
    中台是什么
    Kubernetes K8S之Ingress详解与示例
    Rancher2.x平台搭建与使用
  • 原文地址:https://www.cnblogs.com/richerdyoung/p/7866502.html
Copyright © 2020-2023  润新知