產生器工具
可即時產生識別碼與測試值的工具。所有產生過程都在您的瀏覽器中完成,不會傳送到任何地方。
- 假資料產生器自訂你需要的欄位,一次產生最多 1,000 筆擬真的假資料,輸出為 JSON、CSV 或 SQL 的 INSERT 語句。所有處理都在瀏覽器中完成,不會上傳,也不會使用任何真實的個人資料。
- UUID 產生器在瀏覽器中產生 UUID,可選擇隨機的 v4 或可依時間排序的 v7。選好數量後可單獨複製或一次全部複製。
- 密碼產生器在瀏覽器中產生強隨機密碼,並顯示實際的熵值位元數,而非模糊的強度指示。所有內容都不會被傳送或儲存。
- 亂數產生器在任意範圍產生整數或小數亂數,並可選擇不重複。數值來自瀏覽器的密碼學亂數來源,而非 Math.random。
- QR Code 產生器為網址、文字或 Wi-Fi 產生 QR code,並下載為 PNG 或 SVG。所有處理都在瀏覽器中完成,不會上傳,產生的 code 也永不失效。
- cron 表達式產生器與解析器輸入 cron 表達式,即可看到實際的下次執行時間。每個欄位都會驗證,永遠不會觸發的排程也會標示出來。
- 轉盤抽獎貼上名字或數字清單,轉動轉盤就能隨機抽出一個。中選者在轉盤開始轉動前就已決定,因此動畫不會影響結果。
選擇合適的產生工具
憑證請使用密碼產生器,識別碼請使用 UUID 產生器,抽籤、擲骰與測試數值請使用亂數產生器。三者都從瀏覽器的密碼學亂數來源以拒絕取樣抽取數值,因此每個結果的機率完全相同。
要填滿表格或測試資料檔時使用假資料產生工具;要把連結或 Wi-Fi 憑證變成可掃描的內容時使用 QR 碼產生器;想確認排程實際會在何時觸發時使用 cron 運算式工具;需要讓一群人親眼看著抽籤進行時,則使用抽獎轉盤。
亂數從哪裡來
這裡所有的隨機值都取自 crypto.getRandomValues,也就是瀏覽器具密碼學安全性的亂數產生器,並以拒絕取樣而非取餘數的方式收進你指定的範圍,所以範圍內沒有任何一個值比其他值更容易出現。對密碼而言,這是一項安全屬性;對抽獎而言,它就只是公平。
多數程式最先想到的 Math.random 則完全是另一回事:快速、只要幾個輸出就能被預測,而且語言規格明文排除其在密碼學用途上的使用。用它來產生密碼的工具,表面上看不出有什麼問題,而這正是問題所在。
產生的資料應該可以安心使用
測試資料只有在執行測試不會接觸到真實的人時才有用,所以假資料產生工具的電話號碼取自保留給虛構用途的號段,電子郵件與網址取自 RFC 2606 的範例網域,IP 位址則取自不會被路由的文件用範圍。
這也是反對另一種誘人做法的理由:複製正式資料再把姓名清掉。移除識別資訊並不會讓資料集去識別化,而清理過的副本仍然是放在存取控管較弱之處的正式資料。從結構描述產生資料,能得到正確的形狀,而且完全沒有來源問題。
有些工具產生的是「規格」,而不是數值
cron 運算式與 QR 碼並不是隨機輸出,而是之後會由其他系統解讀的產物,真正該問的是那個解讀是否與你的本意一致。這就是為什麼 cron 工具會列出接下來的執行時間,而不只是解析欄位;也是為什麼 QR 產生器會回報它所選用的版本與錯誤修正等級。
在正式使用前先與現實比對。針對人人都會踩到的日期與星期組合,仔細讀過執行日期;印刷的條碼則請在下訂一千份之前,先用兩三支不同的手機掃描測試。
