使用用户的密码加密其用户名是否是允许他们登录服务的可行且安全的方法?



首先,这可能是一个复杂的问题(我不确定这是否是问这个问题的正确地方),但是我一直在考虑用户的安全方法要使用用户名和密码登录服务(在此示例中,我们将使用网站使用),而服务器本身并未直接存储任何一个。

我在学校的一堂课上想到了这一点,所以如果有一个简单的原因,我不会感到惊讶,为什么网站不使用它,但我根本没有找到任何例子在线使用。这将使用服务器端上的不对称加密形式,将用户名和密码组合为一种将存储在服务器上的唯一" 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一起使用。

最新更新