產生器工具

可即時產生識別碼與測試值的工具。所有產生過程都在您的瀏覽器中完成,不會傳送到任何地方。

選擇合適的產生工具

憑證請使用密碼產生器,識別碼請使用 UUID 產生器,抽籤、擲骰與測試數值請使用亂數產生器。三者都從瀏覽器的密碼學亂數來源以拒絕取樣抽取數值,因此每個結果的機率完全相同。

要填滿表格或測試資料檔時使用假資料產生工具;要把連結或 Wi-Fi 憑證變成可掃描的內容時使用 QR 碼產生器;想確認排程實際會在何時觸發時使用 cron 運算式工具;需要讓一群人親眼看著抽籤進行時,則使用抽獎轉盤。

亂數從哪裡來

這裡所有的隨機值都取自 crypto.getRandomValues,也就是瀏覽器具密碼學安全性的亂數產生器,並以拒絕取樣而非取餘數的方式收進你指定的範圍,所以範圍內沒有任何一個值比其他值更容易出現。對密碼而言,這是一項安全屬性;對抽獎而言,它就只是公平。

多數程式最先想到的 Math.random 則完全是另一回事:快速、只要幾個輸出就能被預測,而且語言規格明文排除其在密碼學用途上的使用。用它來產生密碼的工具,表面上看不出有什麼問題,而這正是問題所在。

產生的資料應該可以安心使用

測試資料只有在執行測試不會接觸到真實的人時才有用,所以假資料產生工具的電話號碼取自保留給虛構用途的號段,電子郵件與網址取自 RFC 2606 的範例網域,IP 位址則取自不會被路由的文件用範圍。

這也是反對另一種誘人做法的理由:複製正式資料再把姓名清掉。移除識別資訊並不會讓資料集去識別化,而清理過的副本仍然是放在存取控管較弱之處的正式資料。從結構描述產生資料,能得到正確的形狀,而且完全沒有來源問題。

有些工具產生的是「規格」,而不是數值

cron 運算式與 QR 碼並不是隨機輸出,而是之後會由其他系統解讀的產物,真正該問的是那個解讀是否與你的本意一致。這就是為什麼 cron 工具會列出接下來的執行時間,而不只是解析欄位;也是為什麼 QR 產生器會回報它所選用的版本與錯誤修正等級。

在正式使用前先與現實比對。針對人人都會踩到的日期與星期組合,仔細讀過執行日期;印刷的條碼則請在下訂一千份之前,先用兩三支不同的手機掃描測試。