php openssl 加密 解密id 替代mcrypt_encrypt 已转码可在url中使用

本文介绍了一个基于 OpenSSL 的 PHP 加密类,该类提供了一种简单的方法来加密和解密数据,作为 mcrypt_encrypt 的替代方案。它还包含了一个用于转换 base64 编码以便在 URL 中使用的实用函数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

php openssl 加密 解密id 替代mcrypt_encrypt 已转码可在url中使用

基于openssl 的加密类, 直接上源码,直接能用


<?php
/**
 * Copyright (C) 
 * @author Roller
 * @date   2018/8/2 11:55
 */

namespace generalRecruit\library;


class Crypt
{
    //base64_encode(openssl_random_pseudo_bytes(32))生成
    private static $key = '+Cm0/dhmcYl7Gko/r+V+pP63RVpeSBX+yn9TB6eAsWo=';
    //base64_encode(openssl_random_pseudo_bytes(16))生成
    private static $iv = 'cR/27pU5TnPAKuNtvV0jdA==';

    /**
     * 加密数据
     * @param string $data 需要加密的数据
     * @return string
     * @author Roller
     * @date   2018/8/2 12:00
     */
    public static function encrypt($data)
    {
        $encrypted = openssl_encrypt($data, 'aes-256-cbc', base64_decode(self::$key), OPENSSL_RAW_DATA, base64_decode(self::$iv));
        return self::base64ToUrl($encrypted);
    }

    /**
     * 解密
     * @param string $encrypted 待解密数据
     * @return string
     * @author Roller
     * @date   2018/8/2 12:00
     */
    public static function decrypt($encrypted)
    {
        $encrypted = self::urlToBase64($encrypted);
        return openssl_decrypt($encrypted, 'aes-256-cbc', base64_decode(self::$key), OPENSSL_RAW_DATA, base64_decode(self::$iv));
    }

    /**
     * base64 转url
     * @param $string
     * @return mixed|string
     * @author Roller
     * @date   2018/8/2 14:08
     */
    private static function base64ToUrl($string)
    {
        $data = base64_encode($string);
        $data = str_replace(array('+', '/', '='), array('-', '_', ''), $data);
        return $data;
    }

    /**
     * url 转base64
     * @param $string
     * @return bool|string
     * @author Roller
     * @date   2018/8/2 14:08
     */
    private static function urlToBase64($string)
    {
        $data = str_replace(array('-', '_'), array('+', '/'), $string);
        $mod4 = strlen($data) % 4;
        if ($mod4) {
            $data .= substr('====', $mod4);
        }
        return base64_decode($data);
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值