SHA加密
SHA(Secure Hash Algorithm)是一系列密码哈希函数,用于生成数据的固定长度哈希值。
SHA 加密特点:
- 无论输入多长的数据,输出都是固定长度的哈希值
- 相同的输入始终产生相同的哈希值
- 是单向加密,无法从哈希值还原原始数据
- 安全性比 MD5 更高,抗碰撞能力更强
SHA 版本对比:
- SHA-1:输出 160 位(40个十六进制字符),安全性较低,已不推荐使用
- SHA-256:输出 256 位(64个十六进制字符),安全性较高,广泛应用
- SHA-512:输出 512 位(128个十六进制字符),安全性最高,计算量更大
常见问题:
- Q:默认用哪种算法,能换吗?
A:默认选中SHA-256,直接输入内容就实时出结果,清空输入时结果也一并清空。点其它算法按钮会立即切换并重算,最后一次选的算法记在浏览器本地,下次打开仍保持,不用每次重选。 - Q:拿到一段哈希,怎么知道对方用的是哪种算法?
A:把原文粘进来,逐个点算法按钮,看哪个结果和对方的摘要一致(忽略大小写)。HEX长度只能粗分:40位是SHA-1、56位是224、64位是256、96位是384、128位是512;SHA-2与SHA3同长度时完全一样,光看长度分不出来,需对方确认算法名。用了HMAC的摘要还得知道密钥才能复现。 - Q:HMAC密钥对哪些算法有效?
A:9种算法都支持。密钥非空时当前算法改用HMAC计算,密钥按UTF-8文本处理,留空则是普通哈希。SHA3系列的HMAC并非NIST推荐的KMAC,做接口签名建议用SHA-256或SHA-512,并与对接方确认算法。 - Q:「逐行哈希」会跳过空行吗,行首空格算不算?
A:纯空白行会被跳过,其余每行单独算一个哈希,按原顺序一行一个。留下的行按原始内容计算,行首行尾的空格也参与哈希,不会被去掉。 - Q:勾选「大写HEX」会重新计算哈希吗?
A:不会。勾选或取消只是把结果框里已有的字母就地转成大写或小写,哈希值本身不变;改动输入内容、切换算法、改HMAC密钥或逐行模式才会重新计算。 - Q:大写HEX、逐行哈希、HMAC密钥和选中的算法会保存吗?
A:会。四项设置都记在浏览器本地,刷新页面后仍保持上次的勾选状态、密钥和算法。 - Q:SHA-1、SHA-256和SHA3-256该选哪个?
A:按对接方要求的算法选,不同算法的结果完全不同,不能互相验证。SHA-1已不推荐用于安全场景,签名校验常用SHA-256或SHA-512;SHA3系列基于Keccak结构,仅在对方明确要求时使用。
常见用途:
- 为文本生成摘要,校验内容是否被改动
- 数字签名和认证
- 区块链技术中的区块哈希计算
- 密码存储(结合盐值使用)