如何通过php 使用异或(XOR)加密/解密文件

php教程评论3.2K views阅读模式

php 使用异或(XOR)加密/解密文件

原理:将文件每一个字节与key作位异或运算(XOR),解密则再执行一次异或运算。

代码如下:

<?php

$source = 'test.jpg';
$encrypt_file = 'test_enc.jpg';
$decrypt_file = 'test_dec.jpg';
$key = 'D89475D32EA8BBE933DBD299599EEA3E';

echo '<p>source:</p>';
echo '<img src="'.$source.'" width="200">';
echo '<hr>';

file_encrypt($source, $encrypt_file, $key); // encrypt

echo '<p>encrypt file:</p>';
echo '<img src="'.$encrypt_file.'" width="200">';
echo '<hr>';

file_encrypt($encrypt_file, $decrypt_file, $key); // decrypt

echo '<p>decrypt file:</p>';
echo '<img src="'.$decrypt_file.'" width="200">';

/** 文件加密,使用key与原文异或生成密文,解密则再执行一次异或即可
* @param String $source 要加密或解密的文件
* @param String $dest   加密或解密后的文件
* @param String $key    密钥
*/
function file_encrypt($source, $dest, $key){
	if(file_exists($source)){
		
		$content = '';          // 处理后的字符串
		$keylen = strlen($key); // 密钥长度
		$index = 0;

		$fp = fopen($source, 'rb');

		while(!feof($fp)){
			$tmp = fread($fp, 1);
			$content .= $tmp ^ substr($key,$index%$keylen,1);
			$index++;
		}

		fclose($fp);

		return file_put_contents($dest, $content, true);

	}else{
		return false;
	}
}

?>

本篇文章介绍了如何通过php 使用异或(XOR)加密/解密文件 ,更多相关内容请关注php教程网。

相关推荐:

通过php 如何获取一个变量的名字

了解php 对象克隆 clone的相关内容

关于mysql general log 的相关操作

以上就是如何通过php 使用异或(XOR)加密/解密文件的详细内容,更多请关注php教程网其它相关文章!

企鹅博客
  • 本文由 发表于 2020年10月12日 18:52:51
  • 转载请务必保留本文链接:https://www.qieseo.com/251324.html

发表评论