分享一款好用的PHP下ID混淆外掛程式

2022-07-31 10:54:09 字數 1784 閱讀 1199

前幾天接到個任務,甲方先前自己找外包開發的乙個產品購買小站不準備繼續給外包維護了,轉手拋給我們,順便提了一堆修改意見。

其中乙個意見是因為外包開發的訂單**直接用資料庫自增的id作為訂單號,導致訂單號又短又好記,下單的人直接通過訂單號就能推測出該產品的銷量,為甲方業務員的吹噓設下巨大的阻礙。

不出所料這個包袱到我的桌上。

通過搜尋,我列出幾種方法供領導選擇:

方法\原始id值

優缺點1510

100訂單建立時間戳轉年月日時分秒後加左邊拼0的id,長度22

優點:不用改動表結構資料

缺點:懂行的人一眼就能看穿

2017032110445700000001

2017032110445700000005

2017032110445700000010

2017032110445700000100

所有id全加41100000,長度8

缺點:需要改動表資料

41100001

41100005

41100010

41100100

給訂單表增加乙個字段,使用隨機字串生成給定長度

優點:訂單號與id完全無關,難以判斷銷量

缺點:需要改動表結構

隨機隨機

隨機隨機

使用github外掛程式,optimus

優點:不用改動表結構資料

647890742

443442450

191221

1452509963

根據指示,似乎決定使用optimus,在github上搜,第乙個就是。

先在本地搭了乙個測試環境,使用composer拉下原始碼後,在自帶的bin目錄下執行

php optimus spark

得到三個配置必須引數

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:

encode:

decode:";

該混淆演算法使用了donald knuth的整型雜湊,具體算式:

encode = ( ( raw * prime ) & ( 2^32-1 ) ) ^ random

decode = ( ( encode ^ random ) * inverse ) & ( 2^32-1 )

( prime * inverse ) & ( 2^32-1 ) = 1

缺點是假如訂單被列印成紙了,那麼三個引數必須固定,再也不能變換。

分享一款超級好用的工作手機

工作手機,是企業發展缺一不可的管理工具。現在很多人都喜歡談論和運用魚汛工作手機,因為不僅僅適用於部隊 機關,還適用於電商 教育 金融 醫美 保險 婚紗攝影等領域,有效管理員工,提公升工作效率,保護客戶資源,是企業管理必備神器 這款手機具有微信分析 分析 客戶分析 績效分析 安全管控 使用管控等六大功...

一款好用的lnmp工具

恭喜,lnamp 已安裝成功 wdcp管理面板 http c48 whailun.houdunphp.com 8080 預設使用者密碼 admin wdlinux.cn 檢視伺服器web環境 探針資訊 phpinfo資訊 wdos官網 wdcp管理系統交流論壇 lanmp一鍵安裝包 wdos論壇討論...

一款好用的除錯外掛程式 vConsole

乙個輕量 可拓展 針對手機網頁的前端開發者除錯面板。就是可以在手機輸出除錯的very nice的外掛程式 1.安裝 npm install vconsole2.頁面引入 import vconsole from vconsole 3.在componentdidmount進行初始化 var vcons...