密码摘要云工适配
把 UTF-8 字符串或字节串交给云工 SHA-256 原语(Web Crypto digest),逐字节转换为小写十六进制,转换共用 云工宿主 字节。豫 的 字节串转小写十六进制;文字摘要就是字符串的原字节交给字节摘要,二者结果恒同。输入超过宿主值桥的 16 MiB 交换上限时先在豫言里抛出异常,避免宿主 JS 错误穿出 Wasm。应用只接收摘要文字,不接收宿主密码对象。
恒时相等文字 完全用豫言写成,不依赖宿主:长度相同的两个字符串逐字节取整数差、把差的平方累加,最后比较累计值是否为零;循环体没有依赖数据的分支,也不提前退出。Node 测试用 64 KiB 的两个字符串比较首字节相异与末字节相异的耗时,二者同量级(提前退出的实现会相差数百倍)。