使用 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 的密码散列仍然有效吗? 的相关文章

  • 如何通过 PDO 使用密码哈希来使我的代码更安全? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我的代码实际上可以工作 但它一点也不安全 我不想使用 MD5 因为它不是那么安全 我一直在查找密码哈希 但我不确定如何将其合并到我的代
  • 如何使用 DUKPT 加密在读卡器中生成密文?

    For BDK 0123456789ABCDEFFEDCBA9876543210 KSN FFFF9876543210E00008 生成的密文如下 C25C1D1197D31CAA87285D59A892047426D9182EC11353
  • 为什么AES java解密返回额外的字符?

    请原谅我英语不好 我使用 mcrypt 我从这里得到它用于 php 和 java 的 MCrypt https snipt net raw ee573b6957b7416f28aa560ead71c3a2 nice 在我的android应用
  • 在 ASP.NET 中加密 cookie

    我想在 ASP NET 中加密 cookie 我已关注本文的方法 http www codeproject com KB web security HttpSecureCookie aspx 但它有一个缺点 那就是在内部方法上使用反射 这导
  • 加密安全随机数生成器如何工作?

    我了解标准随机数生成器的工作原理 但在使用密码学时 随机数确实必须是随机的 我知道有一些仪器可以读取宇宙白噪声 http en wikipedia org wiki Hardware random number generator帮助生成安
  • 如何在python中使用RSA私钥加密数据?

    我已经安装了pyCrypto http pythonhosted org pycrypto 在 Python 2 7 1 上打包来执行一些加密操作 Q1 我想做的操作是加密一些数据private Key 代替public Key 这个图书馆
  • 如何创建包含多列MD5的GENERATED列?

    我尝试在 PostgreSQL 14 3 中添加下表 CREATE TABLE client cache id BIGINT PRIMARY KEY GENERATED ALWAYS AS IDENTITY request VARCHAR
  • 如何改进 kubernetes 集群容器中的随机数生成?

    我发现运行的容器内的随机数生成存在一些问题 在 kubernetes 集群中 重复值 可能是缺乏熵 在容器内部 或者它可能是更高级别的其他东西 但是 我想研究熵角 我有几个问题 很难找到答案 proc sys kernel random e
  • crypto createHMAC 输出根据 Nodejs 版本而有所不同

    我在升级节点版本时遇到加密模块问题 创建的HMAC取决于节点的版本 您将在下面找到重现该问题的代码片段 如果我将密钥编码为 BASE64 或任何 HMAC 不依赖于 node js 版本 如果我将其编码为二进制 则当我更改 Node js
  • 如何通过 md5 比较图像?

    该方法是否比较图像的像素值 我猜它不会起作用 因为它们的尺寸彼此不同 但如果它们相同但格式不同怎么办 例如 我截图并保存为 jpg另一个并保存为 gif MD5哈希是实际的二进制数据 因此不同的格式将具有完全不同的二进制数据 因此 要使 M
  • 哈希密码字段使用什么数据类型以及长度?

    我不确定密码哈希是如何工作的 稍后将实现 但现在需要创建数据库模式 我正在考虑将密码限制为 4 20 个字符 但据我了解 加密后哈希字符串的长度将有所不同 那么 如何将这些密码存储在数据库中呢 更新 仅使用哈希函数不足以存储密码 你应该阅读
  • 文件加密与解密问题

    我一直在尝试在 VC Express 2010 中加密和解密文件 我见过的所有教程和文档都需要两个FileStreams 来加密文件 一个用于读取未加密的版本 另一个用于加密 当我实际编写代码时 它不断抛出错误 告诉我它无法打开该文件 因为
  • 在 Linux 中使用 Python 读取 EXE、MSI 和 ZIP 文件元数据

    我正在编写一个 Python 脚本 将大量 Windows 安装程序索引到数据库中 我想知道如何使用在 Linux 上运行的 Python 从 EXE MSI 和 ZIP 文件中读取元数据信息 公司 产品名称 版本等 Software 我在
  • 在 .NET 中加载 ECC 私钥

    我有一个 ECC 私有密钥和一个包含公钥的证书文件 我可以获取 PEM 或 DER 格式的文件 我可以将证书读入X509Certificate用这个代码 var certbytes File ReadAllBytes certificate
  • 在 .Net Core 上使用非对称密钥

    我正在尝试运行此示例中的代码 https learn microsoft com en us dotnet standard security how to store asymmetric keys in a key container
  • 如何使用 OpenSSL 为 DNSSEC 生成 ECDSA 私钥和公钥?

    我正在尝试为 DNSSEC 算法 13 创建私钥和公钥 include
  • Excel中的MD5哈希函数?

    我想将文档中的多个 Excel 单元格从序列号转换为该序列号的 MD5 哈希值 excel中是否有预编译公式可以做到这一点 或者是我执行VBA的唯一选择 如果是VBA 我该怎么做 问题中的一些链接Excel VBA 的密码哈希函数 http
  • 对 Java 安全性和 BouncyCastle API 感到茫然和困惑

    我一直在尝试理解 Java 的 BouncyCastle 加密 API 不幸的是 我发现 Java 密码学总体上被服务提供者接口和术语所掩盖 以至于我无法理解任何东西的实际作用 我已经尝试反复阅读必要的文档 但它仍然难以理解 引入了许多远远
  • 如何 md5 所有列(无论类型如何)

    我想创建一个 sql 查询 或 plpgsql 它将 md5 所有给定的行 无论类型如何 但是 在下面 如果 1 为空 则哈希为空 UPDATE thetable SET hash md5 accountid accounttype cre
  • 如何使用 JNDI 和 Digest-MD5 对 LDAP 进行身份验证

    我正在尝试使用 DIGEST MD5 加密对 LDAP 服务器进行身份验证 使用简单加密时 它工作得很好 但由于显而易见的原因 我无法通过网络以纯文本形式发送密码 奇怪的是 在使用 Softerra LDAP 浏览器时 我可以使用 Dige

随机推荐

  • 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 您可以使用在