使用 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 分享