Rumah  >  Artikel  >  pembangunan bahagian belakang  >  如何通过php 使用异或(XOR)加密/解密文件

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

jacklove
jackloveasal
2018-06-09 14:50:354759semak imbas

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

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

代码如下:

<?php

$source = &#39;test.jpg&#39;;
$encrypt_file = &#39;test_enc.jpg&#39;;
$decrypt_file = &#39;test_dec.jpg&#39;;
$key = &#39;D89475D32EA8BBE933DBD299599EEA3E&#39;;

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

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

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

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

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

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

		$fp = fopen($source, &#39;rb&#39;);

		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 的相关操作


Atas ialah kandungan terperinci 如何通过php 使用异或(XOR)加密/解密文件. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn