wrjc1hod 发表于 2024-7-11 02:09:35

PHP加密解密详解


    <p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">为了<span style="color: black;">保准</span>网络传输数据的安全性,<span style="color: black;">触及</span><span style="color: black;">敏锐</span>数据的传输,最好对数据预先加密,<span style="color: black;">而后</span>再在网络上进行传输,<span style="color: black;">同期</span>,还要<span style="color: black;">保准</span>数据在另一端是可解密的,并且还<span style="color: black;">必要</span>要<span style="color: black;">经过</span>钥匙(公钥或私钥)<span style="color: black;">才可</span>解密,<span style="color: black;">无</span>钥匙(公钥或私钥)的人即使是拿到了加密过的数据<span style="color: black;">亦</span><span style="color: black;">没</span>法解密。</p>
    <h2 style="color: black; text-align: left; margin-bottom: 10px;">对<span style="color: black;">叫作</span>加密</h2>采用单钥<span style="color: black;">暗码</span>系统的加密<span style="color: black;">办法</span>,同一个密钥<span style="color: black;">能够</span><span style="color: black;">同期</span>用作信息的加密和解密,这种加密<span style="color: black;">办法</span><span style="color: black;">叫作</span>为对<span style="color: black;">叫作</span>加密,<span style="color: black;">亦</span><span style="color: black;">叫作</span>为单密钥加密。<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">在对<span style="color: black;">叫作</span>加密算法中常用的算法有:<a style="color: black;">DES</a>、<a style="color: black;">3DES</a>、TDEA、<a style="color: black;">Blowfish</a>、RC2、RC4、<a style="color: black;">RC5</a>、<a style="color: black;">IDEA</a>、SKIPJACK、AES等。</p>
    <h3 style="color: black; text-align: left; margin-bottom: 10px;">AES加密算法</h3>
    <p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;">暗码</span>学中的高级加密标准(Advanced Encryption Standard,AES),又<span style="color: black;">叫作</span>Rijndael加密法,是美国联邦政府采用的一种区块加密标准。这个标准用来替代原先的DES,<span style="color: black;">已然</span>被多方分析且广为全世界所<span style="color: black;">运用</span>。2006年,高级加密标准已然<span style="color: black;">作为</span>对<span style="color: black;">叫作</span>密钥加密中最流行的算法之一。</p>
    <p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">PHP的OpenSSL扩展<span style="color: black;">已然</span>实现了AES加密算法,<span style="color: black;">咱们</span><span style="color: black;">能够</span><span style="color: black;">经过</span>OpenSSL扩展<span style="color: black;">供给</span>的<span style="color: black;">办法</span>实现对数据的加密和解密,PHP在7.2版本<span style="color: black;">已然</span>完全移除了MCrypt加密,PHP手册在7.1迁移页面给出了替代<span style="color: black;">方法</span>,<span style="color: black;">便是</span>用OpenSSL取代MCrypt.</p>
    <h3 style="color: black; text-align: left; margin-bottom: 10px;">PHP AES实现</h3>
    <p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">PHP实现代码:</p>
    <div style="color: black; text-align: left; margin-bottom: 10px;">class AES
      {
      //设置AES秘钥
      private static $aes_key = bUYJ3nTV6VBasdJF; //此处填写前后端<span style="color: black;">一起</span>约定的秘钥

      /**
      * 加密
      * @param string $str 要加密的数据
      * @return bool|string 加密后的数据
      */
      static public function encrypt($str) {

      $data = openssl_encrypt($str, AES-128-ECB, self::$aes_key, OPENSSL_RAW_DATA);
      $data = base64_encode($data);

      return $data;
      }

      /**
      * 解密
      * @param string $str 要解密的数据
      * @return string 解密后的数据
      */
      static public function decrypt($str) {

      $decrypted = openssl_decrypt(base64_decode($str), AES-128-ECB, self::$aes_key, OPENSSL_RAW_DATA);
      return $decrypted;
      }


      }</div>
    <h2 style="color: black; text-align: left; margin-bottom: 10px;">非对<span style="color: black;">叫作</span>加密</h2>对<span style="color: black;">叫作</span>加密算法在加密和解密时<span style="color: black;">运用</span>的是同一个秘钥;而非对<span style="color: black;">叫作</span>加密算法<span style="color: black;">必须</span>两个密钥来进行加密和解密,这两个秘钥是公开密钥(public key,简<span style="color: black;">叫作</span>公钥)和私有密钥(private key,简<span style="color: black;">叫作</span>私钥)。<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">在非对<span style="color: black;">叫作</span>加密中<span style="color: black;">运用</span>的<span style="color: black;">重点</span>算法有:<a style="color: black;">RSA</a>、<a style="color: black;">Elgamal</a>、背包算法、Rabin、D-H、<a style="color: black;">ECC</a>(椭圆曲线加密算法)等。</p>
    <h3 style="color: black; text-align: left; margin-bottom: 10px;">RSA加密算法</h3>
    <p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">RSA是<span style="color: black;">日前</span>最有影响力的公钥加密算法,该算法基于一个<span style="color: black;">非常</span>简单的数论事实:将两个大素数相乘<span style="color: black;">非常</span>容易,但那时想要对其乘积进行因式分解却极其困难,<span style="color: black;">因此呢</span><span style="color: black;">能够</span>将乘积公开<span style="color: black;">做为</span>加密密钥,即公钥,而两个大素数组合成私钥。公钥是可发布的供任何人<span style="color: black;">运用</span>,私钥则为自己所有,供解密之用。</p>
    <p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">解密者<span style="color: black;">持有</span>私钥,并且将由私钥计算生成的公钥发布给加密者。加密都<span style="color: black;">运用</span>公钥进行加密,并将密文发送到解密者,解密者用私钥解密将密文解码为明文。</p>
    <p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">以甲要把信息发给乙为例,<span style="color: black;">首要</span>确定角色:甲为加密者,乙为解密者。<span style="color: black;">首要</span>由乙随机确定一个KEY,<span style="color: black;">叫作</span>之为密匙,将这个KEY始终<span style="color: black;">保留</span>在机</p>




荔枝糖 发表于 2024-8-19 21:53:52

认真阅读了楼主的帖子,非常有益。

星☆雨 发表于 2024-9-3 19:20:53

楼主听话,多发外链好处多,快到碗里来!外链论坛 http://www.fok120.com/

nqkk58 发表于 2024-10-5 00:01:30

你的话语如春风拂面,温暖了我的心房,真的很感谢。

b1gc8v 发表于 2024-10-11 06:59:04

我们有着相似的经历,你的感受我深有体会。

nqkk58 发表于 2024-10-26 00:19:33

楼主的文章非常有意义,提升了我的知识水平。
页: [1]
查看完整版本: PHP加密解密详解