首頁  >  文章  >  後端開發  >  如何透過php 使用異或(XOR)加密/解密文件

如何透過php 使用異或(XOR)加密/解密文件

jacklove
jacklove原創
2018-06-09 14:50:354782瀏覽

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 的相關運算


以上是如何透過php 使用異或(XOR)加密/解密文件的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn