Python module - Hashids
Posted on Nov 6, 2016 in Python 模組/套件推薦 by Amo Chen ‐ 1 min read
本篇來介紹一個有趣的模組 Hashids ,這個模組主要功用是將整數(或多個整數)轉換成為一個短而不重複的 ID 。
其實轉換的結果就很像是 Youtube 的影片 ID ,不過 Hashids 可以再轉換回原本輸入的整數資料。所以跟 Hash(雜湊) 其實沒有很大的關係,簡單來說只能稱為 看起來像 Hash 的 ID
。
而這個模組的演算法也相當簡明,可以有空看看。 GitHub
Installation
$ pip install hashids
使用範例
Encode 1 個整數
>>> from hashids import Hashids
>>> hashids = Hashids()
>>> hashids.encode(123)
'Mj3'
Encode 多個整數
>>> from hashids import Hashids
>>> hashids = Hashids()
>>> hashids.encode(123, 456)
'X68fkp'
Decode
>>> from hashids import Hashids
>>> hashids = Hashids()
>>> hashids.decode('X68fkp')
(123, 456)
Encode with Salt
大家可以發現如果沒有加 salt , encode 過的字串是可以輕易被轉換回來的,為了避免被輕易解出來, Hashids 還可以使用 salt 進行 encode :
>>> hashids = Hashids(salt='this is my salt')
>>> hashids.encode(123)
'YDx'
控制 Hashids 最小長度
由於 Hashids 的演算法的緣故,預設 encode 過的 Hashids 的長度很容易就可以猜出原本整數的大小,所以可以透過參數控制 encode 後產生的最小長度:
>>> hashids = Hashids(min_length=10)
>>> hashids.encode(123)
'7N1aMj3bWm'
其他的用法可以詳閱 Hashids 的文件。
最後必須強調的是 Hashids 所做的事並不是加密,所以請不要用來 encode 機敏性高的資料。請選擇合適的加密方法保護你的機敏性資料!