![]() |
1
17
我赞成大卫·巴顿的建议 DCPCrypt library . 我已经在几个项目中成功地使用了它,并且在您阅读了使用示例后不会超过15分钟。它使用MIT许可证,因此您可以在商业项目或其他项目中自由使用它。dcpcrypt实现了许多算法,包括rijndael,即aes。 也有许多googlable独立(单单元)实现——问题是您信任哪个实现,除非您准备自己验证特定库的正确性。 |
![]() |
2
16
出于典型的身份验证目的,您不需要存储密码,只需要检查用户输入的密码是否正确。如果是这种情况,那么您只需存储一个哈希签名(例如MD5),并将其与输入的密码的签名进行比较。如果两个签名匹配,则输入的密码正确。 存储加密密码可能很危险,因为如果有人获得了您的“主”密码,他们可以检索到您所有用户的密码。 如果决定使用MD5,可以使用Delphi附带的messagedigest_5.pas(至少它包含在我的Delphi2007中)。还有其他一些使用Delphi源代码的实现,您可以从中选择。 |
![]() |
3
8
我认为涡轮动力密码箱是一个优秀的脚本编写库: http://sourceforge.net/projects/tplockbox/ 我不知道它是否对您的使用来说太大,但是它很容易使用,您可以用5行代码加密一个字符串。都在例子中。 |
![]() |
4
3
唐德瑞有正确的方法。您不应该使用可逆密码器来存储密码。正如正确指出的那样,如果您的“主”钥匙曾经被损坏,整个系统也会受到损坏。使用不可逆的哈希(如MD5)更安全,您可以将哈希值存储为明文。只需散列输入的密码,然后将其与存储的散列进行比较。 |
![]() |
5
3
我一直使用涡轮动力锁箱。它工作得很好,而且很容易使用。实际上,我将它用于完全相同的事情,将密码存储在配置文本文件中。 |
![]() |
6
3
涡轮动力锁箱3(http://lockbox.seanbdurkin.id.au/)使用自动加盐。 我建议不要用巴顿的DCPCRYPT,因为静脉注射不加盐。在某些情况下,这是一个非常严重的安全缺陷。 与之前的通信相反,LB3的AES实现完全符合标准。 |
![]() |
7
2
我用过这个 library ,很快添加。但是 wiki shows 没有更多的解决方案。 |
![]() |
8
2
即使您加密,在我看来,您的解密密钥和加密的密码都将在可执行文件中,这意味着任何情况下都不可能仅仅是模糊的安全性。任何人都可以获取解密密钥和加密密码并生成原始密码。 你想要的是单向散列。 |
![]() |
9
1
只是个提醒。 如果您不需要与其他的crypt libs进行互操作,那么dcp或lockbox就可以完成这项工作。 但是 如果你需要它完全符合林代尔的规格,忘记免费的组件,它们大多数时候都有点“糟糕”。 |
![]() |
10
1
正如其他人所指出的,为了进行身份验证,您应该避免使用可逆加密来存储密码,也就是说,您应该只存储密码散列,并对照存储的散列检查用户提供的密码的散列。然而,这种方法有一个缺点:它容易受到 rainbow table 如果攻击者持有密码存储数据库,则会发生攻击。 您应该做的是存储一个预先选择(和秘密)的salt值+密码的散列值。也就是说,将salt和密码连接起来,散列结果,然后存储这个散列。进行身份验证时,请执行相同的操作-连接salt值和用户提供的密码hash,然后检查是否相等。这使得彩虹桌攻击不可行。 当然,如果用户通过网络发送密码(例如,如果您正在使用Web或客户机-服务器应用程序),则不应通过明文发送密码,因此,您应该存储哈希(salt+password)并对照哈希(salt+hash(password))进行检查,而不是存储哈希(salt+password),并让您的客户机预哈希用户提供的密码。通过网络发送。如果用户(和许多用户一样)出于多种目的重复使用同一密码,这也会保护用户的密码。 |
![]() |
11
1
我建议用某种盐。不要将crypt(password)存储在配置文件中,而是安装此存储crypt(salt+password)。作为“salt”,您可以使用打开数据库所需的内容,例如db_name+user_name。对于crypt函数,您可以使用一些众所周知的algorithm,例如aes、idea、des,或者简单地使用其他字符串中的字节对每个字节进行异或运算,该字符串将是您的密钥。为了使求解更为不同,可以使用一些随机字节,并存储它们。 所以存储:
并连接:
|
![]() |
12
0
尼克当然是对的——我只是假设当你说你想花15分钟来实现一个安全解决方案时,你知道你在做什么。如果您决定采用(更好的)路径,dcpcrypt库还实现了许多散列算法。 |
![]() |
13
0
几个解决方案:
|
![]() |
14
0
您需要将它存储在一个只有当前用户也可以访问的地方。 基本上有两种方法可以做到这一点:
Internet Explorer使用2。但是,如果您可以获得本地访问权限,则可以对这两个1进行解密。2。如果您拥有正确的主密钥和算法(例如, iepv 可以获取Internet Explorer密码)。
所以:
——杰罗恩 |
![]() |
15
0
Embarcadero的演示给出了一个简单但对大多数应用来说足够强大的系统: https://edn.embarcadero.com/article/28325 |
![]() |
jsc · Powershell创建密码过期报告 6 年前 |
![]() |
Emp1 · 密码-登录不工作Python 7 年前 |
|
Anmol Dua · 使用django身份验证重置密码 7 年前 |
![]() |
Norgul · Laravel密码代理外观 7 年前 |