(2022-04-22 12:17修正)
–bcryptの実装を使うと、1種類の入力値があればハッシュ値と入力値を使ってチェックしてくれるようです。
–すでに検討済みで、選択肢から外していたらすみません。
↑申し訳ありません、無理でした。
ところで、メールアドレスハッシュ化の是非ですが、個人的にはおすすめできないと考えています。
ハッシュ化の手法は、例えばパスワードであれば、盗み出されたハッシュ値から元の値を特定されるまでの間に、ユーザーがパスワードを変更するための猶予時間を引き延ばすために用いられることが多いと思います。
となると、パスワードが盗み出されたら、速やかにユーザーに情報漏えいを通知し、パスワード変更を促す必要があります。
そこで使われるのは、大抵がメールになるはずです。
そのため、メールアドレスをサービス提供元が不可逆な方式(暗号化ではなくハッシュ化)で変換して保持する場合、パスワードが漏洩した場合にユーザーに通知する有効な手段を失うことになります。
そのためもあり、メールアドレスを平文以外の形で保持するのであれば、ハッシュ化ではなく、暗号化の方がセキュリティリスクは総合的に下がるのではないかと思われます。
※普通はサービス側で情報漏洩えいしたユーザーにアカウントロックをかけてパスワードを無効化すると思いますので、あまり問題にはならないかもしれません。
※あと、メールアドレスはパスワードのように簡単に変更できる情報ではないので、メールアドレスのハッシュ値が漏えいしたら、いつかは特定されてしまう、というリスクからは逃れられないと思っています。
追記
メールアドレスを何のために使うかが論点だと思いますので、答えは本人にしかわからないですよね。
聞かれてもないことを長々と述べてしまいお目汚し失礼しました😣