各类知识收集,PHP技术分享与解决方案各类知识收集,PHP技术分享与解决方案各类知识收集,PHP技术分享与解决方案

Str Tom,为分享PHP技术和解决方案,贡献一份自己的力量!
收藏本站(不迷路),每天更新好文章!
当前位置:首页 > CMS教程 > PHP

PHP中AES加密文件的解析(附代码)

管理员 2023-09-05
PHP
133

PHP中AES加密文件的解析(附代码)

内容导读

收集整理的这篇技术教程文章主要介绍了PHP中AES加密文件的解析(附代码),小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含4147字,纯文字阅读大概需要6分钟

内容图文

本篇文章给大家带来的内容是关于PHP中AES加密文件的解析(附代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

AES 简介

高级加密标准(AES,Advanced Encryption Standard)为最常见的对称加密算法(微信小程序加密传输就是用这个加密算法的)。对称加密算法也就是加密和解密用相同的密钥。

对称加密
加密和解密用到的密钥是相同的,这种加密方式加密速度非常快,适合经常发送数据的场合。缺点是密钥的传输比较麻烦。秘钥容易泄露。

非对称加密
加密和解密用的密钥是不同的,这种加密方式是用数学上的难解问题构造的,通常加密解密的速度比较慢,适合偶尔发送数据的场合。优点是密钥传输方便。常见的非对称加密算法为RSA、ECC和EIGamal。

注意:
PHP7.2删除了Mcrypt扩展,这里使用OpenSSL扩展。

<?php /** AES 算法    */class Aes {    private $hex_iv = '00000000000000000000000000000000';     private $key = '397e2eb61307109f6e68006ebcb62f98';        function __construct($key) {        $this->key = $key;                $this->key = hash('sha256', $this->key, true);    }    /*    * 字符串加密 不写入文件     */    public function encrypt($input)    {        $data = openssl_encrypt($input, 'AES-256-CBC', $this->key, OPENSSL_RAW_DATA, $this->hexToStr($this->hex_iv));                $data = base64_encode($data);                return $data;    }    /*    * aes 给PHP文件加密    * 写入设置文件    */    public function filecrypt($filename)    {        $type=strtolower(substr(strrchr($filename,'.'),1));                    if ('php' == $type && is_file($filename) && is_writable($filename)) {                   $contents = file_get_contents($filename);                                  // echo $contents;exit;                   $contents = php_strip_whitespace($filename);                                  // echo $contents;exit;                 // $headerPos = strpos($contents,'<?php');                 // echo $headerPos;exit;                 // $contents = substr($contents, $headerPos + 5, $footerPos - $headerPos);                 // echo $contents;                 exit;                 $data = openssl_encrypt($contents, 'AES-256-CBC', $this->key, OPENSSL_RAW_DATA, $this->hexToStr($this->hex_iv));                                  // echo $data;exit;                 $data = base64_encode($data);                                  // echo $data;exit;                 return file_put_contents($filename, $data);              }                   return false;      }    /*    * 字符串解密    */    public function decrypt($input)    {        $decrypted = openssl_decrypt(base64_decode($input), 'AES-256-CBC', $this->key, OPENSSL_RAW_DATA, $this->hexToStr($this->hex_iv));                return $decrypted;    }    /*      For PKCS7 padding     */    private function addpadding($string, $blocksize = 16) {        $len = strlen($string);                $pad = $blocksize - ($len % $blocksize);                $string .= str_repeat(chr($pad), $pad);                return $string;    }    private function strippadding($string) {        $slast = ord(substr($string, -1));                $slastc = chr($slast);                $pcheck = substr($string, -$slast);                if (preg_match("/$slastc{" . $slast . "}/", $string)) {                    $string = substr($string, 0, strlen($string) - $slast);                    return $string;        } else {                    return false;        }    }        function hexToStr($hex)    {        $string='';                for ($i=0; $i < strlen($hex)-1; $i+=2)        {                    $string .= chr(hexdec($hex[$i].$hex[$i+1]));        }                return $string;    }}$key = '397e2eb61307109f6e68006ebcb62f98';$aes = new Aes($key);$filename = __DIR__.'exchange.php';// $filename = 'Y6RCuF6ETPC5J57hfhxovg==';// 加密$string = $aes->filecrypt($filename);// echo $string;echo "OK,加密完成!" ;

二、简单函数加密PHP文件

<?php   function encode_file_contents($filename) {       $type=strtolower(substr(strrchr($filename,'.'),1));       if ('php' == $type && is_file($filename) && is_writable($filename)) { // 如果是PHP文件 并且可写 则进行压缩编码           $contents = file_get_contents($filename); // 判断文件是否已经被编码处理           $contents = php_strip_whitespace($filename);            // 去除PHP头部和尾部标识           $headerPos = strpos($contents,'<?php');           $footerPos = strrpos($contents,'?>');           $contents = substr($contents, $headerPos + 5, $footerPos - $headerPos);           $encode = base64_encode(gzdeflate($contents)); // 开始编码           $encode = '<?php'."n eval(gzinflate(base64_decode("."'".$encode."'".")));nn?>";            return file_put_contents($filename, $encode);       }       return false;   }    //调用函数 // echo __DIR__.'server.php';    $filename = __DIR__.'server.php';   encode_file_contents($filename);   echo "OK,加密完成!" ;

相关文章推荐:

php的curl中post方式和get方式的请求代码

thinkphp5中如何把json对象转换为数组(代码)

以上就是PHP中AES加密文件的解析(附代码)的详细内容,更多请关注Gxl网其它相关文章!

内容总结

以上是为您收集整理的PHP中AES加密文件的解析(附代码)全部内容,希望文章能够帮你解决PHP中AES加密文件的解析(附代码)所遇到的程序开发问题。 如果觉得技术教程内容还不错,欢迎将网站推荐给程序员好友。

内容备注

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

相关推荐

扫码关注

qrcode

QQ交谈

回顶部