直至正文
豫言包府
← 众包

豫言操作系统密码摘要 0.2.0

豫言 · 库

计算文字与字节的 SHA-256 小写十六进制摘要,并提供尽力恒时的文字比较。

密码摘要公约 0.2.0

此包供 SHA-256 之摘要与尽力恒时之比文。惟司摘要与比较,不自许口令贮藏或消息认证之安;盐、口令派生与凭据之期,仍由客另定(口令派生见[口令派生](../口令派生/规范.文言.md))。

摘要

摘要SHA256十六进制 以所入字符串之 UTF-8 原字节求 SHA-256,返恰六十四位 ASCII 小写十六进制字符,无首饰、盐与终行。摘要SHA256字节十六进制 于任意字节串(可含零字节,不作文字解)为同一之算,返同形之六十四字符;同一段字节,二术之果必同。浏览器、CF Worker、节点及原生诸适配,同入须同果。入空亦可。入不得逾十六 MiB(宿主值桥之限),逾者或宿主密码原语败,则调用败,抛豫言之异。

恒时相等文字

恒时相等文字 较二字符串之 UTF-8 字节,同则阳,异则阴。长(以字节计)异,径返阴——许泄其长;长同则遍历诸字节而积其差,循环之数惟系于长,不因首异而止,亦无系于字节值之分支(差以平方相积,尽为零乃相等)。用以比令牌、摘要诸秘值,免逐字符比较因早退而生之时序差。

此乃尽力恒时之豫言实现:不用宿主专有之函(如 Workers 之 timingSafeEqual),编译器与宿主不保严格恒时。欲得严格恒时之保者,当于宿主层为同类之比。

同一之例

  • 摘要SHA256十六进制 "abc" 与 摘要SHA256字节十六进制("abc" 之 UTF-8 字节)皆为 ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad;入空得 e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855。
  • 摘要SHA256字节十六进制 于 00 ff 01 fe 00 00 80 7f 00 及零至二百五十五之全部字节值,各与标准实现同。
  • 恒时相等文字 "" "" 为阳;"abc" "abc" 为阳;"abc" "abd"、"abc" "Abc"、"abc" "abcd"、"" "a" 为阴;汉字文同为阳、差一字为阴;字节数同而内容异(如 甲 与 abc)为阴。

界

此包不供 HMAC、他散列之法、盐或口令之贮;不保 恒时相等文字 能御微架构层面之侧信道。

所赖

观包之制

上传之记

今修订:1 ·

  1. 修订 1
    取 ZIP

包之层级

父:豫言操作系统接口

无子包。