10
有人在用 hashid 嗎? 拿來作為 db index 的混淆演算法有什麼缺點? (hashids.org)
IngramChen 積分 0

原來還有這種工具啊,可以避免 dirty word 還蠻帥的

你問的 db index 混淆演算是什麼意思?這個 hashid 不是 id generator 啊,資料庫裡還是存 int 不是?

smallufo 積分 0

所以 Ingram 你若是當時知道這 lib , 還會自己開發 FlakeId 嗎?

IngramChen 積分 3 編輯於

FlakeId 是 distributed id generator ,不是做 hash,而且 FlakeId 裡面有 timestamp,有時候可以拿來query,很方便。我用的 encode 只是單純 base62,沒加混餚也沒擋髒字。現在想想好像真的該混餚一下比較好,即使現在 kaif 用不到 (都是 public resource)

真的要保密的 id 我系統裡會考慮 type4 UUID,像是 kaif 的用戶 db 的 id 就是,而非 FlakeId.

FlakeId 的一部份 source 在此1。有興趣看看吧,也可以直接改來用

smallufo 積分 0

ya , 就是 db 仍然存 int / long , 但是外界難以猜出上/下一個 row

IngramChen 積分 0

我想位數夠多的話 (例如8位) 應該不好猜了。如果真的要保密到家就再加上 MAC 吧

popcorny 積分 1

原來有這樣的東西,感覺挺實用的,有時候我也會有這種內部享用auto increment,但是對外又有不想被猜到的需求。

smallufo 積分 2

對啊. 以前我是用encrypt 之後再 base64 , 成為 url-safe. 但是太長了,且加密用於這裡太 overkill... 想找類似 youtube-like 的 id 演算法. 就看到這個 library 了. 這 lib 好玩之處就是還可以直接 encode 多個 int , 對於 url 資訊隱藏更有用

IngramChen 積分 2 編輯於

hahsids 這工具跟 hash 一點關係也沒有,它算 codec 吧 (因為 hash 通常不能解回來)

我看了一下它的 source1 ... hmmm,只是用 salt 去 shuffle alphabet 而已,連個 PRNG 都沒用。這個隨便就會被破了吧,所以不要太依賴它的混淆做保護...