安装
使用 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