资讯专栏INFORMATION COLUMN

PHP AES cbc模式 pkcs7 128加密解密

Jaden / 2371人阅读

摘要:今天在对接一个第三方接口的时候,对方需要模式下的加密。这里简单写一个获取库存,更新价格信息加密结果解密结果加密数据解密数据执行方法加密结果解密结果

今天在对接一个第三方接口的时候,对方需要AES CBC模式下的加密。这里简单写一个demo
class Model_Junjingbao extends Model
{
   
    private static $_partnerKey  = "6d70a09e4d0f8095";
    //获取库存,更新价格信息
    public static function test($productId=2780)
    {
       
        $data = array(
            "productId"=>$productId,
            "startTime"=>"2018-04-09",
            "endTime"=>"2018-04-10"
        );
   
         $str = json_encode($data);
        $xcrypt =  self::aes_cbc_pkpadding($str);
        
        var_dump($xcrypt);//加密结果
        var_dump(self::aes_cbc_pkpadding_back($xcrypt));//解密结果
    }


    //AES加密数据
    private static function aes_cbc_pkpadding($str)
    {
       
        $block= mcrypt_get_block_size(MCRYPT_RIJNDAEL_128,MCRYPT_MODE_CBC);
        $pad=$block-(strlen($str)%$block);
        if($pad<=$block) {
            $char=chr($pad);
            $str.=str_repeat($char,$pad);
        }
        $xcrypt = mcrypt_encrypt(MCRYPT_RIJNDAEL_256, self::$_partnerKey, $str, MCRYPT_MODE_CBC);
      
       
        return $xcrypt;
    }

    //AES解密数据
    private static function aes_cbc_pkpadding_back($xcrypt)
    {

        $string = mcrypt_decrypt(MCRYPT_RIJNDAEL_256, self::$_partnerKey, $xcrypt, MCRYPT_MODE_CBC);
        $slast = ord(substr($string, -1));
        $slastc = chr($slast);
        if (preg_match("/$slastc{" . $slast . "}/", $string)) {
            $string = substr($string, 0, strlen($string) - $slast);
            return $string;
        } else {
            return false;
        }
    }

}
执行test方法

加密结果

øæ׌“j·A" OÈ[ótcÚ‡2Y‰XXÒ¦½™Ép¬p[DâFw`?oàá¹d&x4(çôl£‰¡±Ü‘I¾"ä YÖsÓd°Ý·^$’4höè¶Â÷GÂ)

解密结果

{"productId":2780,"startTime":"2018-04-09","endTime":"2018-04-10"}

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/29400.html

相关文章

  • PHP 迁移 Mcrypt 至 OpenSSL 加密算法详解

    摘要:下文中我们将分别使用和来实现加解密,二者同步加解密的要点为使用何种填充算法。下面我们给出填充算法的实现填充算法移去填充算法默认使用自动对待加密数据进行填充以对齐加密算法数据块长度。需固定使用,并通过调整的长度,来实现加密算法。 对称加解密算法中,当前最为安全的是 AES 加密算法(以前应该是是 DES 加密算法),PHP 提供了两个可以用于 AES 加密算法的函数簇:Mcrypt 和 ...

    AlanKeene 评论0 收藏0
  • 循序渐进学加密

    摘要:在古典加密算法当中,加密算法和密钥都是不能公开的,一旦泄露就有被破解的风险,我们可以用词频推算等方法获知明文。年美国公司研制的算法是人类历史上第一个公开加密算法但不公开密钥的加密方法,后来成为美国军方和政府机构的标准加密算法。 还记得上初二的那年夏天,班里来了一个新同学,他就住在我家对面的楼里,于是我们一起上学放学,很快便成了最要好的朋友。我们决定发明一套神秘的沟通方式,任何人看到都不...

    Y3G 评论0 收藏0
  • 循序渐进学加密

    摘要:在古典加密算法当中,加密算法和密钥都是不能公开的,一旦泄露就有被破解的风险,我们可以用词频推算等方法获知明文。年美国公司研制的算法是人类历史上第一个公开加密算法但不公开密钥的加密方法,后来成为美国军方和政府机构的标准加密算法。 还记得上初二的那年夏天,班里来了一个新同学,他就住在我家对面的楼里,于是我们一起上学放学,很快便成了最要好的朋友。我们决定发明一套神秘的沟通方式,任何人看到都不...

    fsmStudy 评论0 收藏0
  • 密码学之DES/AES算法

    摘要:填充算法与基本上是可以通用的。年,高级加密标准已然成为对称密钥加密中最流行的算法之一。常用库介绍是一个功能强大的加密算法扩展库。为提供了各种各样的加密算法。目前已支持的算法包括是使用编写的加密工具包。 本文示例代码详见:https://github.com/52fhy/cryp... DES DES全称为Data Encryption Standard,即数据加密标准,是一种使用密钥加...

    Shonim 评论0 收藏0
  • 使用crypto-js进行128AES/ECB/PKCS7Padding加密/解密

    摘要:支持多种加解密方案这里主要记录一下使用进行位的加解密前端加密是不安全的不安全的不安全的初始化一个文件直接全部回车就行啦安装在同级目录下新建一个文件写入以下内容导入包定义加解密的都放这里了加密还有啥意义设置数据块长度生成密钥字节数 crypto-js支持多种加/解密方案, 这里主要记录一下使用 crypto-js 进行 AES 128位 的加/解密; 前端加密是不安全的, 不安全的, 不...

    jas0n 评论0 收藏0

发表评论

0条评论

Jaden

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<