当前位置 : 主页 > 网络编程 > PHP >

PHP RAS 利用已知公钥加解密

来源:互联网 收集:自由互联 发布时间:2021-06-28
PHP RAS 利用已知公钥加解密 /* RSA 加密 @param string $param 要加密的字符串 @param string $key RSA公钥 @return string 返回加密后的字符串*/private function rsaEncrypt($param,$key){ //声明一个空字符串 $str
PHP RAS 利用已知公钥加解密
/*
 RSA 加密
 @param string $param 要加密的字符串
 @param string $key RSA公钥
 @return string 返回加密后的字符串
*/
private function rsaEncrypt($param,$key){
    //声明一个空字符串
    $str = '';
    //验证公钥是否可用
    $key = openssl_pkey_get_public($key);
    //判断要加密的字符串长度 如果长度超过117 则将字符串分割加密
    if(strlen($param)>117){
        //分割字符串
        $parArr = str_split($param,117);
        foreach($parArr as $k=>$v){
            openssl_public_encrypt($v,$encrypt,$key);
            $str .= $encrypt;
        }
    }else{
        openssl_public_encrypt($param,$encrypt,$key);
        $str = $encrypt;
    }
    return base64_encode($str);
}
/*
  RSA 解密
  @param string $param 要解密的字符串
  @param string $key RSA公钥
  @return string 返回解密后的字符串
*/
private function rsaDecrypt($param,$key){
    //对字符串进行base64解码
    $param = base64_decode($param);
    //验证公钥是否可用
    $key = openssl_pkey_get_public($key);
    //声明一个空字符串
    $str = '';
    //判断要解密的字符串长度 如果长度超过128 则将字符串分割解密
    if(strlen($param)>128){
        $parArr = str_split($param,128);
        foreach($parArr as $k=>$v){
            openssl_public_decrypt($v,$decrypt,$key);
            $str .= $decrypt;
        }
    }else{
        openssl_public_decrypt($param,$decrypt,$key);
        $str = $decrypt;
    }
    return $str;
}
网友评论