问题标签 [password-hash]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
objective-c - 在 Objective-C 中生成 SHA256 哈希
所以我需要在 Objective-C 中生成一个 Sha256 密码,而且我一辈子都不知道该怎么做!我只是想念一些简单的东西吗?
我已经尝试实现以下方法(它是为 iPhone 编写的,但我认为它可能会像一些 Objective-C 代码那样跨平台工作)
但这只是吐出有关 CC_SHA256_DIGEST_LENGTH 是未声明标识符的错误。
security - 最佳实践:Salting & Peppering 密码?
我遇到了一个讨论,在其中我了解到我一直在做的实际上并不是对密码进行加盐,而是对它们进行添加,从那以后我开始使用以下功能进行这两种操作:
忽略选择的哈希算法(我希望这是对椒盐的讨论,而不是特定的算法,但我使用的是安全的算法),这是一个安全的选项还是我应该做一些不同的事情?对于那些不熟悉这些条款的人:
盐是一个随机生成的值,通常与字符串一起存储在数据库中,旨在使使用哈希表无法破解密码。由于每个密码都有自己的盐,因此必须对它们进行单独的暴力破解才能破解它们;但是,由于盐与密码哈希一起存储在数据库中,因此数据库泄露意味着两者都丢失。
辣椒是与数据库分开存储的站点范围的静态值(通常在应用程序的源代码中硬编码),旨在保密。使用它是为了使数据库的妥协不会导致整个应用程序的密码表是暴力破解的。
有什么我遗漏的东西吗?在我的密码上加盐和撒盐是保护用户安全的最佳选择吗?这样做有任何潜在的安全漏洞吗?
注意:为了讨论的目的,假设应用程序和数据库存储在不同的机器上,不共享密码等,因此数据库服务器的破坏并不自动意味着应用程序服务器的破坏。
php - 最佳加密技术
我正在使用 PHP。我想要一个安全快速的密码加密系统。将密码散列一百万次可能更安全,但也更慢。如何在速度和安全之间取得良好的平衡?我想知道 php 中最好的加密方法以及如何应用它。
database - 在哪里存储密码盐以及如何获取它
我负责在我们的 .Net MVC 4 Web 应用程序中进行身份验证,并且在密码散列、存储和身份验证方面遇到了麻烦。
目前的计划是使用 2 个 Salts、1 个动态(每个用户)和 1 个静态(Web 应用常量)和一个强大的哈希函数。
给定一个包含用户名和密码的简单用户表:
- 我是否将每个用户的盐存储在用户表的列中?
我担心的是,这样做,我将不得不仅使用用户名从 Web 应用程序内存中的数据库中获取用户。是否存在某种可能存在问题的攻击?理想情况下,我希望这是一个一步/一个 SQL 请求身份验证。
我是不是太担心了?是否有“每用户”盐的替代方案,我仍然可以进行一步验证?
php - PHP BCrypt 输出正确吗?
新的stackoverflow :)
我刚刚开始使用我在一些关于安全性的网站上找到的 bcrypt 函数。在我们的工作技术人员对我说之前,我从来没有真正担心过这个输出:
盐似乎总是在每个密码的前面。
这是正确的还是我做了一个主要的嘘声?:)
我使用的代码是这样的:
这将输出:
如您所见,盐在密码中,现在为“粗体文本”:
盐 =QyrjMQfjgGIb4ymtdKQXIr
通过 = $2a$12$QyrjMQfjgGIb4ymtdKQXI
ewDBqhA3eNppF8qOrMhidnEbzNvmHqhy
无论盐如何,这似乎每次都是一样的。除了最后一个字符外,总是包含盐?
java - 在 Spring 3 安全性中实现哈希和盐
当我为 dtb 创建新条目时,我理解 hash+salt 的概念。如果我有一些固定的盐字符串,实现它可能并不难,但是当我想使用例如用户的生日作为盐时怎么做?将该密码保存到数据库很容易,但是如何在登录期间对其进行哈希处理?我已经在我的文件中搜索了这段代码applicationContext-security.xml
,他们在其中使用username
了 salt 的值:
因此,如果我理解正确,这意味着,如果我想将用户的生日用作盐,我必须将其存储在我的 dtb 中,将其从 dtb 中取出,然后将其用作盐?这对我来说没有意义,因为如果我的表中有 , ,users
列username
,那么可以对密码进行哈希处理,但对于可能的攻击者来说,很清楚该值将用作盐。有什么我遗漏的东西还是真的有效吗?password
birthday
birthday
php - PHP中的盐渍密码验证
在crackstation.net 上说:
验证密码
- 从数据库中检索用户的盐和哈希。
- 将盐添加到给定密码并使用相同的散列函数对其进行散列。
- 将给定密码的哈希值与数据库中的哈希值进行比较。如果它们匹配,则密码正确。否则,
密码不正确。
但是在页面底部列出的源代码中,我无法弄清楚该validate_password
函数如何考虑盐。我的意思是给定密码前面的盐在哪里?
这是有问题的功能:
php - 在数据库或 php 代码中使用 bcrypt 散列密码?
我在我的 php 应用程序中随处使用bcrypt 进行密码散列。但是,仍然可以选择在数据库中使用bcrypt 或在 php 代码中使用 bcrypt 。虽然我相信使用 bcrypt 比大多数其他散列选项更好,但通过数据库中的函数还是通过 php 中的函数使用 bcrypt 是否更安全?
security - 在内存中存储不太安全的密码哈希,作为性能的权衡?
我目前正在从事一个涉及存储和验证密码的项目。密码经过 100,000 次迭代散列,然后持久化到数据库,稍后在用户登录时检索并验证。它运行良好,因为在低负载期间,散列需要大约 1 秒来生成,并且大多数用户发现延迟可以接受。
问题是随着系统获得越来越多的用户(约 100 个并发),哈希现在正在使 cpu 最大化并需要超过 6 秒才能生成 - 这导致登录时间非常慢,不幸的是系统有无状态需要在每次调用时验证密码的 api。
据我了解,我们希望使哈希计算成本高昂以避免强力攻击,但鉴于攻击者不太可能访问我们的内存转储然后访问数据库,我正在考虑在之后实施折衷方案成功登录后,我将以较少的迭代次数(例如,5000)对密码进行哈希处理,并将其存储在内存中一小段时间。如果有请求想要验证相同的用户 ID,我会使用内存中安全性较低的版本进行验证,否则我会使用数据库中更安全的版本。这可以防止通过访问我们的数据库 bruce 强制我们的数据库的攻击,并且在高负载情况下,大多数请求都可以通过内存中较便宜的哈希来满足。
我意识到这不太安全,但这是一个合理的权衡吗?有什么我应该注意的问题吗?
阿德里安
ldap - 导出到 OpenLDAP 期间的 Liferay 和用户密码
我有一个关于 Liferay 的问题。
我已经用 Liferay + Jasig CAS Authentication 和 OpenLDAP 配置了我的系统。我可以正确验证我的用户,并且可以从 LDAP 导入用户帐户(Ldap 导入)。
我还配置了用户导出到 OpenLDAP..so,现在我可以在创建帐户时导出帐户。事实上,我可以在我的 OpenLDAP 服务器中看到这个新帐户。
当 Liferay 创建一个新帐户时,它会为这个新帐户生成一个随机密码(例如 4hdsdsh),并且用户在注册后会收到一封电子邮件。
问题是:我的 OpenLDAP 服务器这个密码似乎不等于 Liferay 刚刚生成的密码。所以,新用户将永远无法验证我的 Liferay(因为我使用 CAS + LDAP)。
我还发现了一件有趣/奇怪的事情:如果我在 Liferay 中修改这个新密码(使用管理员帐户),我会在我的 OpenLDAP 服务器中正确看到这个密码,因此,用户终于可以登录到我的 Liferay..