正在验证电子邮件地址,但无法查看电子邮件地址

2024-09-30 18:18:55 发布

您现在位置:Python中文网/ 问答频道 /正文

假设以下设想场景:

  • 我有一个供新兵使用的网站。你知道吗
  • 新兵和只有新兵可以在这个网站注册。-最简单的身份验证方法是获取预先授权的电子邮件地址列表。然而,军方显然不会公布他们的电子邮件地址列表。你知道吗
  • 我将如何认证这些人注册?你知道吗

我最初的想法是我可以得到电子邮件地址的sha3散列。然后,当人们注册时,我会对照数据库检查他们输入的电子邮件地址的sha3。基本上,这是一种在不知道电子邮件地址的情况下获取电子邮件是否在系统中的布尔值的方法。你知道吗

这听起来像是一个现实的方法,这将确保电子邮件地址的匿名性?有没有更好的办法来完成这个任务?你知道吗


Tags: 方法身份验证数据库列表网站电子邮件地址系统
3条回答

听起来不错,只要“军方”确信,不管正确与否,散列确实是不可逆转的,并且愿意相信你的地址列表。(顺便问一下,sha5是什么?Afaik sha3是最新一代)。你知道吗

如果他们连加密哈希表都不委托你,另一种方法是委托身份验证:你通过安全连接将电子邮件地址转发给军方,他们会告诉你是否可以。这将是缓慢的,但你只需要做一次,在注册时间。你知道吗

这是一个可行的零知识证明。然而,如果你有军方的合作,人们会认为你可以做得更好。。。你可以从军队那里得到一个序列号和初始密码,然后让新兵用它登录。你知道吗

这将解决人们与电子邮件地址之间没有1:1关系的问题,而且也很难猜测,因为您需要猜测密码和序列号。你知道吗

我认为这是不安全的,只有一个散列的电子邮件地址作为散列算法是不可逆的,但它是理论上有可能有不正确的电子邮件有相同的散列正确的。它适用于md5哈希算法,理论上适用于任何其他算法。你知道吗

我建议使用某种类型的salt(额外的hash函数负载)或个人注册密钥,当然永远不要使用md5。你知道吗

有了你知道的salt和“军方”知道的salt,你可以只收到“军方”的散列信息,并善意地确保加密足够公平,可以通过电子邮件识别新兵。但是这种技术仍然容易受到随机散列的影响。你知道吗

也许,确保新兵电子邮件真正有效的最好方法是在“军事”方面给新兵唯一的注册码,而不是他们需要给你一对注册码和代码的散列以及相应的电子邮件。比每个新兵都需要提供注册码,你将能够从他的电子邮件和注册码重新计算新兵的个人哈希。你知道吗

第二种方法的好处是,如果“军方”不仅给你一对代码/散列,而且给你每个散列的代码列表,其中只有一个是正确的,那么即使是你也不能轻易地将散列强制到电子邮件中。你知道吗

更新:偏执狂的高潮方式。你从“军队”那里得到的哈希值是新兵数量的两倍。每个新兵都有唯一的注册码。然后,您需要首先计算注册码哈希值并检查是否有它。然后你需要将这个散列与电子邮件结合起来,并检查是否有第二个散列。这样你就永远无法自己回复邮件了。你知道吗

相关问题 更多 >