对称加密-利用mcrypt实现加密解密(1)

来源:互联网 发布:中小企业 云计算 编辑:程序博客网 时间:2024/06/05 19:04

做接口的时候需要 token 做加密解密,就随手写了一个 对称加密 的,不多说,干货来了,粘贴就能用,请叫我 琦雷锋

加密:

    /**     * 加密方法     */    function encrypt($plaintext = '')    {    # 密钥是 16 进制字符串格式    $key = pack('H*', "bcb04b7e103a0cd8b54763051cef08bc55abe029fdebae5e1d417e2ffb2a00a3");    // 这个秘钥是  32位<自己可以改变秘钥>,一般放在项目的配置文件中    # 为 CBC 模式创建随机的初始向量    $iv_size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC);// 初始向量长度 2    $iv = mcrypt_create_iv($iv_size, MCRYPT_RAND);// 创建随机的向量值<长度16位>    $iv = substr($iv,0,16);// 防止向量长度 超过 16位    $ciphertext = mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $key,$plaintext, MCRYPT_MODE_CBC, $iv);   //(因为默认是使用 0 来补齐数据)    $ciphertext = $iv . $ciphertext; // 将初始向量附加在密文之后,以供解密时使用    return base64_encode($ciphertext); // 对密文进行 base64 编码    }
解密:

    /*     * 解密方法     */    function decrypt($ciphertext)    {    $ciphertext_dec = base64_decode($ciphertext);    $key = pack('H*', "bcb04b7e103a0cd8b54763051cef08bc55abe029fdebae5e1d417e2ffb2a00a3");// 这个秘钥是  32位<自己可以改变秘钥>,一般放在项目的配置文件中    $iv_size = 16;// 向量长度 16    $iv = substr($ciphertext_dec, 0, $iv_size);// 向量值    $ciphertext_dec = substr($ciphertext_dec, $iv_size); // 获取除初始向量外的密文    return mcrypt_decrypt(MCRYPT_RIJNDAEL_128, $key,$ciphertext_dec, MCRYPT_MODE_CBC, $iv);    }

调用:

    $userId    = 1;    $token     = encrypt($userId);    $usernewId = decrypt($token);    echo $usernewId;
【完结】


原创粉丝点击