使用 Composer 解決 ID 加密問題:ctfang/id-to-code 庫的應用

安裝

使用 composer 安裝 ctfang/id-to-code 非常簡單,只需運行以下命令:

composer require ctfang/id-to-code

使用

首先,我們需要生成一個加密模板。可以使用以下代碼來生成并保存模板:

<?php  use IdCodeCodeGen; use IdCodeCodeService;  require_once __DIR__."/../src/CodeService.php"; require_once __DIR__."/../src/CodeGen.php";  // 最短長度 $minLen = 8; // 數字長度位+純數字模式 $mode   = CodeService::numMode; // 字符長度位+純數字模式 // $mode   = CodeService::chrModel; // 無長度位+36進制| 不能設置最短位數,但是能在最短的位數表達更大的數量 // $mode   = CodeService::notMode;  if ( !file_exists('int.config.json') ){     file_put_contents('int.config.json',(new CodeGen())->genKey($minLen,$mode)); }

生成模板后,我們可以使用 CodeService 來對 ID 進行加密和解密。以下是一個示例,展示如何對 1 億個 ID 進行加密和解密:

<?php  use IdCodeCodeService;  $code = new CodeService('int.config.json');  $ok = true; // 加密解密一億次 for ($int=0;$int<100000000;$int++){     $base = $int;     $str = $code->toString($int);      $newInt = $code->toInt($str);      if ($base != $newInt){         $ok = false;         break;     } } if ($ok){     var_dump("加密 和 解密正常"); }; var_dump($code->toString(1));

每個整數 ID 都會被轉換為類似 71869931 的代碼。

原理

ctfang/id-to-code 庫通過使用加密模板對數字進行替換,而不是進行哈希計算,因此速度非常快。加密模板是一個反人類習慣生成的映射表,普通的自增 ID 經過模板轉換后,會變得無規律。例如,1 可能變成 2,2 變成 5,每個位數獨立使用一個加密模板,并且在轉換時加入設定的位數鹽,使每次轉換的結果都不一樣。即使 ID 從 997 變到 998 只改變了一個數字,由于鹽的不同,前面未變動的數字也會被替換,從而得到一個完全不同的數值。

優勢和應用效果

使用 ctfang/id-to-code 庫的主要優勢在于,它能夠快速、高效地將自增 ID 轉換為無規律的代碼,從而保護系統的業務量信息。同時,由于轉換過程不需要復雜的計算,性能非常高,非常適合需要頻繁處理 ID 的場景,如訂單號、用戶 ID 等。此外,該庫生成的代碼長度較短,方便在前端使用和傳輸。

在實際應用中,ctfang/id-to-code 庫幫助我們成功地隱藏了系統的業務量信息,提升了系統的安全性和隱私保護,同時保持了高效的處理速度,極大地改善了用戶體驗和系統性能。

? 版權聲明
THE END
喜歡就支持一下吧
點贊7 分享