分享一款好用的PHP下ID混淆插件
生活随笔
收集整理的這篇文章主要介紹了
分享一款好用的PHP下ID混淆插件
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
前幾天接到個任務,甲方先前自己找外包開發的一個產品購買小站不準備繼續給外包維護了,轉手拋給我們,順便提了一堆修改意見。 其中一個意見是因為外包開發的訂單網站直接用數據庫自增的id作為訂單號,導致訂單號又短又好記,下單的人直接通過訂單號就能推測出該產品的銷量,為甲方業務員的吹噓設下巨大的阻礙。 不出所料這個包袱到我的桌上。 通過搜索,我列出幾種方法供領導選擇: ?
? 根據指示,似乎決定使用optimus,在github上搜,第一個就是。 先在本地搭了一個測試環境,使用composer拉下源碼后,在自帶的bin目錄下運行 php optimus spark 得到三個配置必須參數 Prime:2147483647以下一個較大的素數 Inverse:一個逆素數,使(PRIME * INVERSE) &?2147483647 == 1 Random:一個2147483647以下的隨機數 建個測試文件,設置參數就能用了。 use Jenssegers\Optimus\Optimus;
//根據測試文件和vendor所在的位置正確設置路徑
require_once(__DIR__.'/../vendor/autoload.php');
$config=array('prime'=>653936159,'inverse'=>7845343,'random'=>421554952
);
$optimus=new Optimus($config['prime'],$config['inverse'],$config['random']);
$exampleId=rand(1,99999);
$encode=$optimus->encode($exampleId);
$decode=$optimus->decode($encode);
echo "raw:{$exampleId}<br>encode:{$encode}<br>decode:{$decode}";
| 方法\原始id值 | 優缺點 | 1 | 5 | 10 | 100 |
| 訂單創建時間戳轉年月日時分秒后加左邊拼0的id,長度22 | 優點:不用改動表結構數據 缺點:懂行的人一眼就能看穿 | 2017032110445700000001 | 2017032110445700000005 | 2017032110445700000010 | 2017032110445700000100 |
| 所有id全加41100000,長度8 | 優點:比較短,8位容易閱讀 缺點:需要改動表數據 | 41100001 | 41100005 | 41100010 | 41100100 |
| 給訂單表增加一個字段,使用隨機字符串生成給定長度 | 優點:訂單號與id完全無關,難以判斷銷量 缺點:需要改動表結構 | 隨機 | 隨機 | 隨機 | 隨機 |
| 使用github插件,optimus | 優點:不用改動表結構數據 | 647890742 | 443442450 | 191221 | 1452509963 |
?
該混淆算法使用了Donald Knuth的整型哈希,具體算式: ENCODE = ( ( RAW * PRIME ) & ( 2^32-1 ) ) ^ RANDOM DECODE = ( ( ENCODE ^ RANDOM ) * INVERSE ) & ( 2^32-1 ) ( PRIME * INVERSE ) & ( 2^32-1 ) = 1 ? 缺點是假如訂單被打印成紙了,那么三個參數必須固定,再也不能變換。轉載于:https://www.cnblogs.com/waltersgarden/p/6604298.html
總結
以上是生活随笔為你收集整理的分享一款好用的PHP下ID混淆插件的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【30集iCore3_ADP出厂源代码(
- 下一篇: 动态规划算法php,php算法学习之动态