システムに UUID を保存するために QR コード バーコードを使用していますが、生成されたバーコードが自分のものであり、他人のものではないことを確認する必要があります。また、QR コードが下位バージョンの範囲に留まり、スキャンしやすいままになるように、エンコードされたデータを短く保つ必要もあります。
私のアプローチは、UUID の raw 値の数値 (128 ビット値) と 16 ビットのチェックサムを取得し、そのデータを Base64 でエンコードしてから QR コードに変換することです。これまでのところ、これは完全に機能します。
チェックサムを生成するには、UUID の文字列バージョンを取得し、それを長い秘密の文字列と結合し、奇数バイトを XOR して SHA-1 ハッシュを生成します。しかし、このハッシュは長すぎるので、すべての古いバイトを XOR してチェックサムの半分を生成し、同様に偶数バイトを使用して残りの半分を生成します。
私が心配しているのは、SHA-1 システムを不必要に XOR ダウンして侵害したことです。結果内のどこかから、操作されていない 2 バイトだけを取得する方がよいでしょうか? 16 ビットのチェックサムが 160 ビットのチェックサムほど安全ではないことは承知していますが、それはバーコードを使いやすくするために支払わなければならない代償です。私が本当に見つけたくないのは、UUIDが平文で送信されるため、簡単にクラックできるチェックサムを提供したことです。
チェックサムを生成するより良い方法があれば、それも質問に対する適切な答えになります。いつもお時間をいただき、またはこれを読んでいただき、ありがとうございます。回答を投稿していただければ、さらに感謝いたします。