温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

php中加密解密DES怎么用

发布时间:2021-09-23 11:33:38 阅读:167 作者:小新 栏目:编程语言
PHP开发者专用服务器限时活动,0元免费领,库存有限,领完即止! 点击查看>>

这篇文章给大家分享的是有关php中加密解密DES怎么用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

任务流程图

片段1

说干就干,我开始编写des加密类 代码如下

class DES
{
    var $key;
    var $iv//偏移量
 
    function DES( $key$iv=0 {
        //key长度8例如:1234abcd
        $this->key = $key;
        if$iv == 0 ) {
            $this->iv = $key;
        } else {
            $this->iv = $iv//mcrypt_create_iv ( mcrypt_get_block_size (MCRYPT_DES, MCRYPT_MODE_CBC), MCRYPT_DEV_RANDOM );
        }
    }
 
    function encrypt($str{
        //加密,返回大写十六进制字符串
        $size mcrypt_get_block_size ( MCRYPT_DES, MCRYPT_MODE_CBC );
        $str $this->pkcs5Pad $str$size );
        return strtoupperbin2hexmcrypt_cbc(MCRYPT_DES, $this->key, $str, MCRYPT_ENCRYPT, $this->iv ) ) );
    }
 
    function decrypt($str{
        //解密
        $strBin $this->hex2binstrtolower$str ) );
        $str mcrypt_cbc( MCRYPT_DES, $this->key, $strBin, MCRYPT_DECRYPT, $this->iv );
        $str $this->pkcs5Unpad$str );
        return $str;
    }
 
    function hex2bin($hexData{
        $binData "";
        for($i 0$i strlen $hexData ); $i += 2) {
            $binData .= chr hexdec substr $hexData$i2 ) ) );
        }
        return $binData;
    }
 
    function pkcs5Pad($text$blocksize{
        $pad $blocksize - (strlen $text ) % $blocksize);
        return $text str_repeat chr $pad ), $pad );
    }
 
    function pkcs5Unpad($text{
        $pad ord $text {strlen $text ) - 1} );
        if ($pad strlen $text ))
            return false;
        if (strspn $textchr $pad ), strlen $text ) - $pad ) != $pad)
            return false;
        return substr $text0, - 1 * $pad );
    }
}

测试代码

<?php
header("Content-type: text/html; charset=utf-8");
error_reporting(0);
require "DES5.php";
// 秘钥
$key 'MOxinrui';
$crypt new DES5($key);
$str 'podsmia';
echo "原字符是".$str.'<br>';
$encrypt_str $crypt->encrypt($str);
echo "加密后的字符是".$encrypt_str.'<br>';
$decrypt_str$crypt->decrypt($encrypt_str);
echo "解密后的字符是".$decrypt_str.'<br>';

效果

原字符是podsmia
加密后的字符是9490E64136137FD8
解密后的字符是podsmia

过了几天,我闲着没事,继续运行一下代码

Deprecated: Methods with the same name as their class will not be constructors in a future version of PHP; DES5 has a deprecated constructor in D:\phpstudy_pro\WWW\des\DES5.php on line 2

原字符是podsmia

Fatal error: Uncaught Error: Call to undefined function mcrypt_get_block_size() in D:\phpstudy_pro\WWW\des\DES5.php:19 Stack trace: #0 D:\phpstudy_pro\WWW\des\1.php(10): DES5->encrypt('podsmia') #1 {main} thrown in D:\phpstudy_pro\WWW\des\DES5.php on line 19

给我报了 fatalerror 这不科学啊,我什么都没动啊。怎么回事呢。后面经过一番研究。发现是php版本的问题。我之前运行成功,那是因为我用的 是php5.5,但是这次报错我用的是php7.2.。那么我需要找替代方案。。接下来看我操作

片段2

<?php
class DES7
{
    //要改的加密
    public function desEncrypt($str,$key) {
        $iv $key;
        $data openssl_encrypt($str,"DES-CBC",$key,OPENSSL_RAW_DATA,$iv);
        $data strtolower(bin2hex($data));
        return $data;
    }
 
    //要改的解密
    public function desDecrypt($str,$key) {
        $iv $key;
        return openssl_decrypt (hex2bin($str), 'DES-CBC'$key, OPENSSL_RAW_DATA,$iv);
    }
}

测试代码

<?php
header("Content-type: text/html; charset=utf-8");
//error_reporting(0);
// 秘钥
require "DES7.php";
$key 'MOxinrui';
$crypt new DES7($key);
$str '问哪个';
echo "原字符是".$str.'<br>';
$encrypt_str $crypt->desEncrypt($str,$key);
echo "加密后的字符是".$encrypt_str.'<br>';
$decrypt_str$crypt->desDecrypt($encrypt_str,$key);
echo "解密后的字符是".$decrypt_str.'<br>';

效果

原字符是问哪个
加密后的字符是074b8beee21eefca7ec3a60cb8edda18
解密后的字符是问哪个

感谢各位的阅读!关于“php中加密解密DES怎么用”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

原文链接:https://www.xuebuyuan.com/3278352.html

AI

开发者交流群×