zoukankan      html  css  js  c++  java
  • php 使用异或(XOR)加密/解密文件

    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;
    	}
    }
    
    ?>

    相关文章:《C 使用异或(xor)加密/解密文件》



  • 相关阅读:
    js中null " "的区别
    简略的地图API应用
    JSON的一个例子(代码来源于网上)
    浅谈Event Flow、Process、Method及其Applications
    JS中object与constructor的分析
    浅谈for...in与for....of
    浅谈语言的过去与未来
    正则表达式的四个小应用
    BOM详细
    BOM
  • 原文地址:https://www.cnblogs.com/fdipzone/p/3715078.html
Copyright © 2011-2022 走看看