gpt4 book ai didi

encryption - SSL 加密、SHA-1 和 SHA-2

转载 作者:太空宇宙 更新时间:2023-11-03 12:41:46 29 4
gpt4 key购买 nike

我正在尝试实现 SHA-2加密而不是 SHA-1 .

为此,我知道这两种哈希算法之间的位数不同,这让我很困惑。

如何实现这一目标以及我需要在哪些部分进行必要的更改?

我可以使用来自 Java、Python 和任何其他主要编程语言的任何开源库。

最佳答案

首先,SHA-1 和与 SHA-2 相关的任何东西都不是“加密”算法。它们是哈希函数。在 SSL 中,散列函数主要用于完整性,而不是 secret 性,通过 HMAC build 。哈希函数接受任意长度的输入,并产生固定长度的输出,这是输入数据的一种“摘要”;该操作不可逆。

哈希函数是“公开的”:没有 secret 数据,没有 key ;每个人都可以计算任何给定输入的哈希函数输出。 “消息认证码”(MAC) 是一种“ key 散列”:在此过程中还输入了一个 secret key (即任意一组位),因此需要(重新)计算 key 的知识MAC 输出。这用于完整性检查(发送方使用 key 计算 MAC,接收方使用 key 重新计算 MAC;如果 MAC 匹配,则数据正确,因为不知道 key 的攻击者无法获得更改了数据并根据更改后的数据计算出有效的 MAC)。

HMAC 是一种将散列函数(例如 SHA-1)转换为 MAC 的结构。 TLS(这是 SSL 的当前标准名称)使用 HMAC。当与给定的哈希函数 h 一起使用时,HMAC 的输出与 h 的输出具有相同的大小。该输出可以按惯例截断:HMAC/SHA-1 名义上产生 160 位输出,但在某些协议(protocol)中通常只保留前 96 位。这种截断不会发生在 SSL 中。

FIPS 180-3标准定义了五个哈希函数,分别命名为SHA-1、SHA-224、SHA-256、SHA-384和SHA-512,输出长度分别为160、224、256、384和512位。 SHA-224、SHA-256、SHA-384 和 SHA-512 函数通俗地称为“SHA-2”,因此“SHA-2”不是一个函数,而是四个哈希函数的家族。

TLS规范定义了密码套件。密码套件是客户端和服务器在连接初始阶段(“握手”)同意的一组密码算法。在这些算法中,MAC 用于确保数据完整性。一些标准密码套件指定 MAC 应为“具有 SHA-256 的 HMAC”,即使用 SHA-2 函数之一的东西。

所以您的问题的答案是:“只需将客户端和服务器配置为使用带有 HMAC/SHA-256 的密码套件之一”。如果您的 SSL 实现不支持此类密码套件,那么您将不得不对其进行修改,这将需要非常透彻地了解 SSL 的工作原理;阅读和理解完整的 RFC 5246 是必要的。

关于encryption - SSL 加密、SHA-1 和 SHA-2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2827121/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com