個人情報と匿名化された情報 (「レポート」) を MySQL データベースに保存する PHP アプリケーションを開発しています。
一人につき複数の「報告書」があり、第三者の登録簿に送られます。
問題は、第三者がこれらのレポートのどれが同一人物のものであるかを知らないことです。そのため、レポートを送信するときに、一意ではあるが追跡不可能な IDをレポートに追加したいと考えています。(第三者が当社内部の人物のIDを知ることはありませんので)
サード パーティは特定の人物について ID で通信する可能性があるため、その ID を暗号化解除して、人物レコードに格納されている ID にする必要があります。(したがって、ハッシュは機能しません)。また、近い将来、より多くの外部関係者が存在することを期待しており、個人ごとに異なる一意の IDを付与したいと考えています。(別の暗号化キーを使用することにより)。
個人の ID を暗号化するためにどのような暗号化方法を使用すれば、常に同じ結果が得られるでしょうか? (たとえば) libsodium extension docsを見ると、個人の ID を暗号化するたびに同じ nonceを使用する必要があると思います 。これは非常に落胆しているようです。
php のopenssl_encryptを介して AES 暗号化を使用すると、同じ問題が発生します。
iv パラメータで空の値が渡されると、E_WARNING レベルのエラーが発生します。