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

PHP 簡易字符加密實現:基於 ASCII 碼位移的可逆算法示例

     編輯:PHP 相關知識

本文展示一個基於 ASCII 碼位移的簡單可逆加密算法,適合理解加密原理、輕量級混淆場景,不適合安全敏感數據。

算法原理

  1. 將字符轉為 ASCII 碼(ord())。
  2. 根據碼值範圍進行位移運算:
    • 32-106:+20
    • 107-126:-75
  3. 結果轉回字符(chr())輸出。

核心代碼

function simpleEncrypt($val) {
    $result = '';
    for ($i = 0; $i < strlen($val); $i++) {
        $c = ord($val[$i]);
        if ($c > 31 && $c < 107) {
            $c += 20;
        } elseif ($c > 106 && $c < 127) {
            $c -= 75;
        }
        $result .= chr($c);
    }
    return $result;
}

// 解密為逆運算
function simpleDecrypt($val) {
    $result = '';
    for ($i = 0; $i < strlen($val); $i++) {
        $c = ord($val[$i]);
        if ($c > 51 && $c < 127) { // 加密後範圍
            $c -= 20;
        } elseif ($c >= 32 && $c <= 51) {
            $c += 75;
        }
        $result .= chr($c);
    }
    return $result;
}

關鍵約束

  • ASCII 範圍 0-127,位移後必須保持在可打印字符範圍(32-126),否則會產生控制字符導致傳輸/存儲異常。
  • 僅處理單字節字符,**不支持中文/多字節編碼**。
  • 屬於替換密碼,極易被頻率分析破解,嚴禁用於密碼、Token、個人隱私等敏感數據。

生產環境替代方案

  • 對稱加密:openssl_encrypt() (AES-256-GCM)。
  • 非對稱加密:openssl_public_encrypt() / openssl_private_decrypt() (RSA)。
  • 密碼哈希:password_hash() + password_verify() (bcrypt/argon2)。
  • JWT:firebase/php-jwt 庫實現無狀態認證。

理解經典算法原理是進階現代密碼學的基石,但請在正確場景使用正確工具。

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