首先,这可能是一个复杂的问题(我不确定这是否是问这个问题的正确地方),但是我一直在考虑用户的安全方法要使用用户名和密码登录服务(在此示例中,我们将使用网站使用),而服务器本身并未直接存储任何一个。
我在学校的一堂课上想到了这一点,所以如果有一个简单的原因,我不会感到惊讶,为什么网站不使用它,但我根本没有找到任何例子在线使用。这将使用服务器端上的不对称加密形式,将用户名和密码组合为一种将存储在服务器上的唯一" userLoginId"。类似的代码将在服务器端使用,其中"加密"将是一个单向加密函数:
userLoginID == "331845364410495642424788" # Just an example
if (encrypt(inputtedUsername,inputtedPassword) == userLoginID)
return True
else
return False
如果任何人都有与此过程类似的过程的例子,或者说明为什么不使用更常用的过程,那将是很棒的。使用此方法,用户在必要时具有不同的"显示名称"one_answers"用户ID",以使其他人/服务器所介绍它们。我个人看不到使用此系统的任何缺点,因此,如果有更多有关服务器安全性知识的人可以解释这种系统的缺陷,我会喜欢它。
据我所知,黑客将不得不强迫用户名和密码,即使他们可以访问用户登录ID的完整列表,他们将无法对其做任何事情,但是我敢肯定,这不是完美无瑕的,因为我只是一时兴起。谢谢,我感谢这可能不是问这个问题的最佳地点或方式。
处理此情况的当前标准方法非常相似,而不包括用户名。创建帐户时,用户的密码使用密码哈希算法(argon2,bcrypt等)进行哈希。此哈希与用户名一起存储。与您的建议的唯一区别是,用户名包含在此哈希中。
很多时候,保持用户名"秘密"并不重要或要求。我并不是说您的想法(通过一些调整)是行不通的,我是说这可能没有用,或者只有在特定情况下才有用。
您在做什么实际上是哈希(非对称加密是一个奇怪的术语tbh)使用用户名作为盐的密码,这是防止基于桌面攻击的一种很好的方法,例如彩虹桌,在线查找等。
如果您使用的哈希函数是安全的,例如SHA-1,这根本不是一个坏方法强制攻击(或至少使它们变得更加难),请参阅PBKDF2,请参阅PBKDF2,您也可以将其与用户名 密码盐Thing一起使用。