首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 綜合知識

PHP XOR 異或運算實現文件加密/解密:原理與完整代碼

     編輯:PHP 綜合知識

核心原理

異或運算 (XOR) 具備 自逆性:A ^ K = B,則 B ^ K = A。同一密鑰對文件每字節異或即可加密,再執行一次即解密。

XOR加密原理

完整實現代碼

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

echo '<p>Source:</p><img src="'.$source.'" width="200"><hr>';
file_encrypt($source, $encrypt_file, $key);
echo '<p>Encrypted:</p><img src="'.$encrypt_file.'" width="200"><hr>';
file_encrypt($encrypt_file, $decrypt_file, $key);
echo '<p>Decrypted:</p><img src="'.$decrypt_file.'" width="200">';

function file_encrypt($source, $dest, $key) {
    if (!file_exists($source)) return false;

    $content = '';
    $keylen = strlen($key);
    $index = 0;
    $fp = fopen($source, 'rb');

    while (!feof($fp)) {
        $byte = fread($fp, 1);
        $content .= $byte ^ $key[$index % $keylen];
        $index++;
    }
    fclose($fp);
    return file_put_contents($dest, $content, LOCK_EX);
}
?>

安全性分析與改進

問題風險改進
密鑰重複使用已知明文攻擊可破解每文件生成隨機 IV,密鑰派生 PBKDF2
無完整性驗證密文可被竄改加密後附加 HMAC-SHA256
ECB 模式等效相同塊產生相同密文採用 AES-CBC/GCM 等成熟算法

結論:XOR 適合教學、簡易混淆,**生產環境嚴禁**用於機密數據,請使用 openssl_encrypt (AES-256-GCM) 或 libsodium。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved