PHP 3DES加密

这篇具有很好参考价值的文章主要介绍了PHP 3DES加密。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

不多说,直接上代码类

然后自行依据实际情况调用即可

<?php

class STD3Des {

    public static function encrypt($str, $key='xxx') {
        $message = $str;
        $iv = '';

        $message_padded = $message;
        $message_padded = self::pkcs5_pad($message_padded, 8);
        if (strlen($message_padded) % 8) {
            $message_padded = str_pad($message_padded, strlen($message_padded) + 8 - strlen($message_padded) % 8, "\0");
        }
        //$message_padded = self::pkcs5_pad($message_padded, 8);//原来是在这打包的,运行了一下发现密文不一样,就改到上面了
//        $encrypted_mcrypt = mcrypt_encrypt(MCRYPT_3DES, $key,
//                self::pkcs5_pad($message, 8), MCRYPT_MODE_ECB, $iv);
        $encrypted_openssl = openssl_encrypt($message_padded, "DES-EDE3", $key, OPENSSL_RAW_DATA | OPENSSL_NO_PADDING);
        //return strtoupper(bin2hex($encrypted_mcrypt));
        return bin2hex($encrypted_openssl);
    }

    public static function encrypt_ECB($str, $key) {
        $message = $str;
        $iv = '';

        $message_padded = $message;
        $message_padded = self::pkcs5_pad($message_padded, 8);
        if (strlen($message_padded) % 8) {
            $message_padded = str_pad($message_padded, strlen($message_padded) + 8 - strlen($message_padded) % 8, "\0");
        }
        //$message_padded = self::pkcs5_pad($message_padded, 8);//原来是在这打包的,运行了一下发现密文不一样,就改到上面了
//        $encrypted_mcrypt = mcrypt_encrypt(MCRYPT_3DES, $key,
//                self::pkcs5_pad($message, 8), MCRYPT_MODE_ECB, $iv);
        $encrypted_openssl = openssl_encrypt($message_padded, "DES-EDE3", $key, OPENSSL_RAW_DATA | OPENSSL_NO_PADDING);
        //return strtoupper(bin2hex($encrypted_mcrypt));
        //return bin2hex($encrypted_openssl);
        return base64_encode($encrypted_openssl);
    }

    public static function decrypt_ECB($encrypted, $key) {//数据解密
        $data = base64_decode($encrypted);
//        $data = $encrypted;
        $decrypted_openssl = openssl_decrypt($data, 'DES-EDE3', $key, OPENSSL_RAW_DATA);
        return $decrypted_openssl;
    }

    public static function encrypt_CFB8($str, $key, $iv) {
        $message = $str;

        $message_padded = $message;
        $message_padded = self::pkcs5_pad($message_padded, 8);
        if (strlen($message_padded) % 8) {
            $message_padded = str_pad($message_padded, strlen($message_padded) + 8 - strlen($message_padded) % 8, "\0");
        }
        $encrypted_openssl = openssl_encrypt($message_padded, "DES-EDE3-CFB8", $key, OPENSSL_RAW_DATA | OPENSSL_NO_PADDING, $iv);
        return base64_encode($encrypted_openssl);
    }

    public static function decrypt($encrypted, $key) {//数据解密
        $data = hex2bin($encrypted);
//        $data = $encrypted;
        $decrypted_openssl = openssl_decrypt($data, 'DES-EDE3', $key, OPENSSL_RAW_DATA);
        return $decrypted_openssl;
    }

    private static function pkcs5_pad($text, $blocksize) {
        $pad = $blocksize - (strlen($text) % $blocksize);
        return $text . str_repeat(chr($pad), $pad);
    }

}

//$encrypted_openssl =STD3Des::encrypt('0123456789', 'test0123456789');
//echo 'encrypted_openssl=='.$encrypted_openssl.'<br />';
//034dcda761d12373f82b025355c6870d
//echo STD3Des::decrypt($encrypted_openssl, 'test0123456789');
/**
 * 
  (1)进行3DES加密(ECB模式)。注:加密密钥不足24位长度时后面补0,超过24位长度时需截取前24位字符。
  (2)将加密后的密文进行hex转换。
  3DES测试结果比对:
  密钥:test0123456789
  测试数据:0123456789
  加密结果:034dcda761d12373f82b025355c6870d
 */
?>

自行了解引用,有测试示例在代码中

1.

2.

3.

4.

5.

6.

7.文章来源地址https://www.toymoban.com/news/detail-537148.html

到了这里,关于PHP 3DES加密的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • JavaScript学习 -- 对称加密算法3DES

    在现代的互联网时代,数据安全性备受关注。为了保护敏感数据的机密性,对称加密算法是一种常用的方法。在JavaScript中,3DES(Triple Data Encryption Standard)是一种常用的对称加密算法。本篇博客将为您展示如何在JavaScript中使用3DES算法进行加密和解密,并提供一个实际的例子

    2024年02月14日
    浏览(47)
  • Java 中常见的加密算法,DES、3DES、AES、RSA

    加密算法是一种将数据转换为不可读形式的算法,以保护数据的机密性和完整性。加密算法被广泛应用于计算机网络、数据库、电子商务等领域,用于保护敏感数据的安全性,如用户密码、信用卡信息、医疗记录等。在 Java 中,有许多常见的加密算法,本文将对加密算法的基

    2024年02月03日
    浏览(56)
  • 关于怎么使用python实现 3DES 加密/解密

    3DES (Triple DES) 是一种对称加密算法,其特点是使用三次密钥加密来提高安全性。 3DES的原理是:对明文进行三次加密,每次加密的密钥不同。加密时,首先使用第一个密钥对明文进行加密,然后使用第二个密钥对加密后的数据进行解密,最后再使用第三个密钥对解密后的数据

    2024年02月15日
    浏览(41)
  • Sweet32漏洞,升级openssl或者禁用3DES和DES弱加密算法

    由于等保的原因,被服务商扫描出漏洞。 warnings: | 64-bit block cipher 3DES vulnerable to SWEET32 attack 如何不喜欢使用nmap,也可以使用如下工具testssl.sh,但是输出的内容太多了,本次我只截取部分 解决办法有两个,一个是升级OpenSSL 1.0.2k-fips 26 Jan 2017 以上,另外一个是更新nginx配置,禁

    2024年02月11日
    浏览(42)
  • 通俗易懂,十分钟读懂DES,详解DES加密算法原理,DES攻击手段以及3DES原理。Python DES实现源码

    DES(Data Encryption Standard)是一种 对称加密 算法。它是在20世纪70年代初期由IBM研发的。它的设计目标是提供高度的数据安全性和性能,并且能够在各种硬件和软件平台上实现。 DES使用56位的密钥和64位的明文块进行加密。DES算法的分组大小是64位,因此,如果需要加密的明文长

    2024年02月03日
    浏览(70)
  • Python 基于pycryptodome,实现对AES、DES、3DES、RSA等常用加密算法的使用,文末附各种加密的源码示例

    (中文名:加密圆顶)pycryptodome是一个基于c实现的Python库,它在2.x中支持2.7以上版本,或3.x中支持3.5以上版本的Python。 可以使用以下命令安装它: 该库支持以下特性 认证加密模式 Authenticated encryption modes (GCM, CCM, EAX, SIV, OCB) AES加密在英特尔上的加速 Accelerated AES on Intel platf

    2023年04月09日
    浏览(93)
  • 【ios】【android】3DES_CBC_PKCS5Padding加密、解密问题(附完整代码)

    问题一:加密结果不一致 一、问题描述 实现了android的蓝牙对接后开始着手ios的蓝牙对接,出现了ios加密结果与在线加密的结果一致,而android的加密结果与甲方公司的结果一致的问题。 1.android部分代码如下: 2.ios部分代码如下: 二、问题解决 重新看了一遍android加密调用部

    2023年04月18日
    浏览(51)
  • Java实现3DES加密解密(DESede/ECB/PKCS5Padding使用)

    3DES(又叫Triple DES)是三重数据加密算法(TDEA,Triple Data Encryption Algorithm)块密码的通称。 它相当于是对每个数据块 应用三次DES加密算法 。密钥长度是128位,192位(bit),如果密码位数少于等于64位,加密结果与DES相同。 原版DES容易被破解,新的3DES出现,增加了加密安全性,避

    2023年04月09日
    浏览(54)
  • 3DES实验 思考与练习:

    T1:关于3DES的分析 和 库函数的思考——完全领悟了!!! 分析过程: T(2): 使用openssl库函数 实现 DES加密: 使用函数DES_ecb_encrypt来进行数据加解密 void DES_ecb_encrypt(const_DES_cblock *input,DES_cblock *output, DES_key_schedule *ks,int enc); 函数功能说明:DES ECB计算 参数说明: input: 输入数据;

    2024年02月03日
    浏览(40)
  • 密码学之DES,3DES与Python实现AES

    最近项目中需要用到DES,3DES解密算法,所以了解一下。正好CSDN上有关于DES,3DES的资料。边看边写一下总结。 密码学之DES,3DES详解与Python实现 DES(Data Encryption Standard-数据加密标准)属于对称加密,即使用相同的密钥来完成加密和解密。分组长度为8个字节64bit(密钥每个字节的最

    2024年02月08日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包