跳轉到

QR code 產生器

什麼時候用得上

把一串很長、很容易打錯的東西交給眼前的人,而現場不方便用網路傳:

  • onion 網址,五十六個字元的隨機字串,用唸的會出錯
  • Tor bridge,一行裡有 IP、指紋與 cert,少一個字元就連不上
  • 臨時的聯絡方式,例如一次性的 Matrix 房間

對方用相機對著螢幕就讀走了,中間不經過任何伺服器,也不留下訊息紀錄。

QR code 裡面是明文

這件事常被誤會。QR code 不是加密,只是一種把文字畫成方格的編碼。任何拍到那張圖的人都讀得出內容,包括牆上的攝影機、對方手機的相簿備份、你身後的人。

要傳的東西如果本身敏感,先確認現場沒有鏡頭,傳完把畫面關掉。真正需要保密的內容應該用端對端加密的通訊工具傳,QR code 適合的是「公開但難打」的字串。

糾錯等級怎麼選

QR code 有內建的糾錯能力,弄髒或遮住一部分還讀得出來。等級越高能修的越多,但同樣的內容需要更大的圖。

等級 可修復 適合
L 7% 螢幕上直接掃,畫面乾淨
M 15% 一般用途,預設值
Q 25% 印出來、可能有摺痕或髒污
H 30% 貼在戶外,或中間要壓一個圖示

在螢幕上給人掃用 L 或 M 就夠,圖比較小、對方的相機也對得比較快。

下載成 SVG

「下載 SVG」會存成向量圖檔,放大不會糊,印出來也清楚。那個檔案就在你的裝置上,沒有經過任何伺服器。

要印在紙上或做成貼紙時,建議把糾錯等級調到 Q 或 H,紙會摺、會髒。

離線可用

跟這一區其他工具一樣,程式存進裝置之後沒有網路也能用。把網路關掉試一次,它照樣畫得出來,那也表示你輸入的內容不可能被送到任何地方。

要把這一頁帶著走,見離線閱讀

編碼用的是誰的程式

QR 編碼交給 qrcode-generator(MIT 授權),原封不動放在 utils/vendor/ 底下。編碼寫錯的典型後果是產生一個掃得出來但內容錯的碼,那比壞掉更糟,所以用成熟的實作而不是自己重寫。

我們另外寫了一個獨立的解碼器放在測試裡,把產生出來的圖讀回文字再比對,所以「呼叫的方式對不對」有測試守著。那支測試在做的過程中抓到一個真的缺陷:函式庫預設把字串當 Latin-1 處理,中文會被截斷成亂碼。