使用 md5 或 sha1 的密码散列仍然有效吗?

2023-12-19

我现在正在做一个金融项目。在这里,团队正在考虑使用MD5 for password hashing。 但是,今天很容易复制SHA1 or MD5要解密的密码,包括复杂密码,例如:My$uper$ecur3PAS$word+448,您可以使用在线页面来解密它,这就是它。 中小型开发者(包括我)使用那些hashing methods,但我认为不足以提供数据库的安全性。 (不包括firewalls, network security, iptables, etc.).

有人可以告诉我解决此漏洞的更好方法是什么吗?


As per OWASP 密码存储备忘单 https://www.owasp.org/index.php/Password_Storage_Cheat_Sheet,建议是:

  • Argon2 是密码哈希竞赛的获胜者,应该被视为您新应用程序的首选;
  • 当需要 FIPS 认证或多个平台上的企业支持时,PBKDF2;
  • scrypt,其中抵抗任何/所有硬件加速攻击是必要的,但支持不是。
  • bcrypt,其中 PBKDF2 或 scrypt 支持不可用。

对于大多数与安全相关的用例,MD5 和 SHA1 并不安全,因为可能会发现与这些算法的冲突。换句话说,给定一个输入及其哈希值,可以导出具有相同哈希值的另一个输入。

SHA-2 哈希算法组对于许多安全用例来说都是安全的,但对于密码哈希来说却不是,因为与上述算法相比,它们的速度非常快。对于密码哈希来说,性能是我们不想要的,因为这会让攻击者更容易通过在短时间内尝试各种密码来执行暴力攻击。

因此,上述 4 种算法在内存、计算能力和时间方面都是昂贵的。这些值通常是参数化的,以便随着新技术随着时间的推移提高计算能力,它们可以调整到较高的值。因此,在使用这些算法时,正确选择工作因子值非常重要。设置非常低的值可能会达不到目的。

除此之外,还应该使用盐。

再次来自同一 OWASP 来源:

  • 在创建每个存储的凭证时生成唯一的盐(不仅仅是每个用户或系统范围);

  • 使用加密强度高的随机数据;

  • 在存储允许的情况下,使用 32 字节或 64 字节盐(实际大小取决于保护功能);
  • 方案安全性不依赖于隐藏、分裂或以其他方式掩盖盐。

盐有两个用途:

  • 防止受保护的表单泄露两个相同的凭据,并且
  • 在不依赖凭证复杂性的情况下增加熵来保护功能。

第二个目标是使针对个人凭证的预计算查找攻击和针对群体的基于时间的攻击变得棘手

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 md5 或 sha1 的密码散列仍然有效吗? 的相关文章

  • RSA_public_decrypt 和 MS Crypto API 等效项

    我正在尝试开发许可证验证解决方案 许可证使用 OpenSSL 在服务器上进行编码RSA private encrypt功能 对于 Mac OS X 使用RSA public decrypt它就像一个魅力 在 Windows 上 我必须使用非
  • 验证 PDF 文档中的数字签名

    我正在尝试验证 PDF 数字签名 我知道 当 PDF 被签名时 会定义一个字节范围 嵌入证书 并且根据我的阅读 签名的消息摘要和时间戳也存储在 PDF 中 我已经可以提取证书并验证它们 现在我正在尝试验证 pdf 的完整性 但我的问题是我不
  • 使用 Ruby OpenSSL 库时公钥无效

    我正在尝试在 Ruby 中生成 RSA 密钥对 主要使用来自这篇博文 http stuff things net 2009 12 11 generating rsa key pairs in ruby 这是我稍微修改过的代码 def gen
  • 使用 C# 计算 HMACSHA256 以匹配支付提供商示例

    对于支付提供商 我需要使用 HMAC SHA256 计算基于哈希的消息身份验证代码 这给我带来了很大的麻烦 支付提供商以伪代码形式给出了两个正确计算验证码的示例 所有密钥均为十六进制 Method 1 key 57617b5d2349434
  • 在 C# 中解析 Cryptocompare API Json 数据

    我正在加载数据 这是返回 Response Success Type 100 Aggregated false Data time 1504979760 high 14 26 low 14 26 open 14 26 volumefrom
  • 无需动态分配的RSA实现

    典型的 RSA 实现包含一个多精度整数库 典型的多精度整数库使用动态分配将大整数表示为大小合适的机器字数组 我预计当使用多精度整数仅使用 RSA 2048 来加密或解密已知长度的消息 通常是对称加密密钥 时 可能会遇到数学整数的限制 并且它
  • 代码签名证书选项

    我被分配了为我的公司购买数字证书来签署我们的代码的任务 我们在 Microsoft 领域开发应用程序 主要是 WPF 或基于 Web 我调查了选项 发现 Comodo 价格合理且反应灵敏 我们准备继续通过它们购买证书 但是在注册表单中有各种
  • 获取证书链

    我正在 Java 中使用 X509 证书 给定一个证书 是否可以在签名层次结构中找到所有其他证书 直到找到根证书 我有一个证书文件 带有 cer扩展名 我想提取父签名证书 我想继续查找该证书的父证书 直到获得最终的自签名根证书 我已经检查了
  • 有没有办法在Python中使用非openssl md5作为hashlib?

    我生成 md5 内容哈希值用于上传验证 但最近我注意到 对于在启用 FIPS 的计算机上运行的任何用户来说 这都会失败 FIPS 禁用 openssl md5 导致ValueError当我尝试初始化 hashlib 时 通常我会使用 SHA
  • adler32 校验和的可靠性如何?

    我想知道与例如相比 adler32 校验和有多可靠 md5 校验和 维基百科上说 adler32 比 md5 可靠得多 所以我想知道有多少 以及以何种方式 更具体地说 我想知道它是否足够可靠 作为对大小为 20GB 以上的 tar 文件的长
  • MessageDigest MD5 算法未返回我期望的结果

    我脑后的某个东西告诉我 我在这里遗漏了一些明显的东西 我正在将现有的 java 项目与第三方 api 集成 该第三方 api 使用 api 密钥的 md5 哈希进行身份验证 它对我不起作用 在调试过程中我意识到我生成的哈希值与他们提供的示例
  • 使用 PBKDF2 和 SHA256 生成 128 位 AES 密钥是否安全?

    我想使用 PBKDF2 和一些加密哈希函数来生成 128 位 AES 密钥 SHA1 也是 128 位 所以我想将其与 PBKDF2 一起使用 但它已损坏 所以我选择使用 SHA256 这是否安全 或者散列大小和生成的密钥大小之间的差异是否
  • 如何改进 kubernetes 集群容器中的随机数生成?

    我发现运行的容器内的随机数生成存在一些问题 在 kubernetes 集群中 重复值 可能是缺乏熵 在容器内部 或者它可能是更高级别的其他东西 但是 我想研究熵角 我有几个问题 很难找到答案 proc sys kernel random e
  • 验证 EXE 上的 Authenticode 签名 - C++,无需 CAPICOM

    我正在为安装程序 DLL 编写一个函数 以验证系统上已安装的 EXE 文件的 Authenticode 签名 该函数需要 A 验证签名是否有效 B 验证签名者是我们的组织 因为这是在安装程序中 并且因为它需要在较旧的 Win2k 安装上运行
  • TweetNaCl.js 最小公钥签名示例

    我试图了解如何基于位于的演示来实现一个最小的基本公钥签名示例here https tweetnacl js org sign 使用纯javascript 我的研究还没有产生一个简单的 javascript 示例 我可以用它来理解其内部工作原
  • iOS 中特定字符串的 SHA1

    根据我的要求 输入字符串必须转换为字节值 string 的每个字符都是 16 位值 必须转换为低 8 位 然后在字节数组上计算 Sha1 生成的 SHA 1 将转换为 40 个字符的字符串 我知道如何将字符串转换为 SHA1 但其余部分对我
  • 使用 OpenSSL 库在 C++ 中生成 SHA 哈希值

    如何使用以下命令生成 SHA1 或 SHA2 哈希值OpenSSL https openssl org图书馆 我搜索了谷歌 找不到任何函数或示例代码 从命令行来看 很简单 printf compute sha1 openssl sha1 您
  • 字节数组的快速位移 - CMAC 子键

    我需要尽可能快地实现 16 字节数组的左移JavaCard 我尝试了这段代码 private static final void rotateLeft final byte output final byte input short car
  • Java Web Start 的证书已过期

    JWS 对代码签名证书过期有何反应 根据我的观察 它似乎忽略了 CA 签名证书的到期日期 但我想找到一些确凿的证据 例如官方文档 来证实这一点 如果签名的 jar 被赋予时间戳 来自时间戳权威 那么即使在证书过期之后签名仍然有效 假设时间戳
  • iOS 目标 c 中的 AES/CBC/PKCS5Padding 结果与 Android 不同

    我在 Android 应用程序中使用 AES CBC PKCS5Padding 代码就像 private static String TRANSFORMATION AES CBC PKCS5Padding private static St

随机推荐

  • android - FileProvider - 名称不能为空

    我的清单中有以下 FileProvider
  • 使用 BATCH 脚本检查目录中是否存在任何类型的文件

    您好 我正在编写一个批处理文件来检查给定文件夹内是否有任何类型的文件 到目前为止我已经尝试过以下方法 if EXIST FOLDERNAME echo Files Exist ELSE echo Empty 如果我知道文件扩展名 例如带有以
  • 正确使用AddClipboardFormatListener并订阅WM_CLIPBOARDUPDATE消息

    我当前正在尝试在我的应用程序中使用 Windows 剪贴板及其通知 具体来说 我正在尝试订阅WM CLIPBOARDUPDATE https learn microsoft com en us windows win32 dataxchg
  • 使用默认值python设置字典的缺失值

    我有一个 defaultdict list 和其他普通字典 A 1 blah nire 2 fooblah 3 blahblah B 1 something 2 somethingsomething 现在假设我有这样的东西 missing
  • 如何从命令行关闭 Rserve

    这个问题涉及到紧密联系 https stackoverflow com questions 23264328 connection of java and r with rserve或许也与此有关关闭预订 https stackoverfl
  • 在 mac osx 上启动应用程序的多个进程

    我在 mac osx 10 9 上使用 python 2 7 来创建应用程序 该应用程序将文件名作为参数 然后打开文件 并继续监视文件的更改 直到文件关闭 对于单个文件来说它工作得很好 我使用 py2app 和 platypus 将 pyt
  • PHP/Angularjs/发布数据为空

    我确实选择了两个字段 month and origin 以表格形式提交给AngularJS控制器 我使用的是与 Ionic 框架打包的 1 3 13 版本 观看一个console log inside then方法值已正确填充 The q
  • 在 Amazon EC2 上构建 gRPC 服务器

    当我尝试在 Amazon EC2 实例上构建 gRPC 服务器 客户端时遇到问题 我有一个实例 A 具有私有 ip 例如 1 2 3 4 服务器代码就像 from concurrent import futures import time
  • 没有共享窗口的山狮上的 NSSharingService

    在山狮上 我尝试使用 AppKit framework 的 NSSharingService 类来实现新的共享可能性 这种代码一切顺利 NSArray array myText NSImage imageNamed myImageFile
  • 扫描上传的文件 C# ASP.net

    我正在尝试对上传的文件进行病毒扫描 我无法控制已安装的病毒扫描程序 该产品由多方使用不同的扫描程序托管 我尝试了以下库 但它总是在 eicar 文件上返回 VirusNotFound https antivirusscanner codep
  • 如何设置MigraDoc的页面大小?

    抱歉 我只是 PDFsharp 的初学者 如何设置文档的PageSize 就说A4吧 怎么设置呢 这是我的代码 谢谢 Document document new Document Add a section to the document
  • 重复 UIAnimation 块,以及再次停止它的方法

    我想做一个小的加载器动画来放入我的应用程序中 我之前用 CGAnimations 做过重复动画 没有任何问题 这次我采用块方法 我正在做一个小测试 但可以重复以下代码 void startLoading block int count 0
  • 为什么 IE9/Firefox 显示的字体大小与其他浏览器不同?

    我正在对一个网站的 CSS 进行编程 并意识到 Internet Explorer 9 显示的字体大小与其他浏览器 Firefox Chrome Safari IE7 和 IE8 不同 我尝试过使用一些重置 并且我在中指定字体px 但IE9
  • 如何打印类型(Either String (IO String))?

    这是一个非常非常长的故事 我不会让你厌烦 但基本上 我设法让自己处于一种需要能够打印该类型的情况Either String IO String 有什么帮助吗 解决方案是单衬 either print print lt lt 如果你想区分它是
  • 滚动到下一个元素

    我正在努力解决 jquery 或 javascript 问题 它已经很烦人了 这告诉我我可能把这个问题想得太复杂了 所以我的标记 简单的 看起来像这样 div class container My Content a href class
  • 仅将字符串的第一个字母大写[重复]

    这个问题在这里已经有答案了 我已经看过这样的帖子 格式为首字母大写 http forums asp net t 1040231 aspx Format 20to 20first 20letter 20upper 20case 如何将字符串中
  • java比较两个Pattern对象

    有没有一种简单的方法可以比较两个Pattern物体 我有一个Pattern使用正则表达式编译 检查代码中的注释 由于有几个正则表达式来描述注释 我想找到一种方法来区分它们 如何做呢 这Pattern类没有实现equals method 你可
  • Google 货币转换器 API - 会随 iGoogle 一起关闭吗?

    iGoogle 是关闭 https support google com websearch answer 2664197 hl en 有一个 未记录 货币转换 API 其 URL 如下 此网址的基础 google com ig 将您带到
  • C++ 模板尖括号陷阱 - C++11 修复是什么?

    在 C 11 中 现在这是有效的语法 vector
  • 使用 md5 或 sha1 的密码散列仍然有效吗?

    我现在正在做一个金融项目 在这里 团队正在考虑使用MD5 for password hashing 但是 今天很容易复制SHA1 or MD5要解密的密码 包括复杂密码 例如 My uper ecur3PAS word 448 您可以使用在