拓冰建站拓冰建站
首页 / 资讯中心 / 正文

300字节打通Node.js与浏览器:同构哈希模块crypto-hash完全入门指南

300字节打通Node.js与浏览器同构哈希模块crypto-hash完全入门指南【免费下载链接】crypto-hashTiny hashing module that uses the native crypto API in Node.js and the browser项目地址: https://gitcode.com/gh_mirrors/cr/crypto-hashcrypto-hash是一个体积极小的同构哈希模块让同一套哈希 API 同时运行在 Node.js 和浏览器中 。它没有引入任何加密实现而是直接调用两个环境各自的原生能力Node.js 里走node:crypto浏览器里走window.crypto.subtle.digest因此浏览器端压缩后只有约300 字节。无论是文件校验、内容签名还是缓存键生成一个模块即可覆盖你的全部运行环境。为什么需要同构哈希库在做前后端分离或 SSR 项目时你经常会在两种场景下踩坑后端用node:crypto算 SHA-256前端却只能依赖某个体积庞大的 JS 加密库同一份计算指纹的业务逻辑被迫写成两套代码维护成本翻倍。同构哈希正是解决这个问题的思路API 完全一致底层按环境自动切换原生实现。crypto-hash 把这件事做到了极致——浏览器版本仅 ~300 字节minified gzipped几乎不占你的打包预算。一键安装步骤通过 npm 一行命令安装npm install crypto-hash如果你还想阅读或二次开发源码也可以克隆仓库git clone https://gitcode.com/gh_mirrors/cr/crypto-hash⚙️ 环境要求Node.js ≥ 18仅支持现代浏览器不支持 Internet Explorer。30秒上手调用一次 sha256API 简单到只有一个异步函数import {sha256} from crypto-hash; console.log(await sha256()); // 36bf255468003165652fe978eaaa8898e191664028475f83f506dabd95298efcNode 端和浏览器端代码完全相同打包工具会根据运行环境自动选择对应实现exports字段里node指向 index.js 入口其余指向 browser.js 入口。核心 API 清单sha1 / sha256 / sha384 / sha512模块导出 4 个哈希函数签名完全一致函数返回典型用途sha256(input, options?)Promisestring通用内容指纹、缓存键 ✅sha384(input, options?)Promisestring更高安全强度的场景sha512(input, options?)Promisestring大文件哈希、更强安全性sha1(input, options?)Promisestring仅兼容旧数据已不安全勿用于敏感场景⚠️两种输入 两种输出格式input支持三种类型string按 UTF-8 编码处理ArrayBufferArrayBufferView如Uint8Array处理文件、二进制数据时很方便options.outputFormat控制返回格式hex默认返回 Hex 编码的字符串buffer返回ArrayBuffer适合需要二进制比对的场景。幕后原理Node.js 和浏览器各走各的原生通道crypto-hash 的同构不是模拟而是各用其家的原生 API运行环境底层实现源码位置Node.jsnode:crypto的createHashindex.js、thread.js浏览器crypto.subtle.digestWeb Crypto APIbrowser.js两个值得了解的设计细节Node.js 端跑在工作线程里index.js通过worker_threads懒启动一个线程执行哈希见thread.js避免阻塞事件循环线程做了unref()不会阻止进程正常退出。Hex 转换走快速路径utilities.js中的bufferToHex用DataView.getUint32按 4 字节整块转 16 进制比逐字节拼接更快。浏览器版本核心逻辑精简到十几行browser.js字符串先经TextEncoder转成字节再交给crypto.subtle.digest最后统一转 Hex 输出。使用注意事项HTTPS 与现代浏览器浏览器端必须在安全上下文HTTPS下使用。crypto.subtle只在安全上下文可用本地开发请用localhost或本地 HTTPS 代理。不支持 IE仅面向现代浏览器️SHA-1 已不安全仅用于兼容旧系统新项目请优先选择 SHA-256 及以上⏳ 所有 API 都是async记得await。常见问题 FAQQ同一个输入Node 端和浏览器端算出的哈希值一样吗A一样。两端都是标准的 SHA 系列算法只要输入编码一致模块内部已统一按 UTF-8 处理字符串输出必然一致。这正是同构哈希的最大价值。Q为什么选择 Promise 而不是同步 APIA浏览器端的crypto.subtle.digest本身就是异步的统一为 Promise API 可以让同一段代码在两端无缝运行。Q能用在 TypeScript 项目里吗A可以。模块自带类型定义index.d.tsoutputFormat: buffer时返回类型会自动收窄为ArrayBuffer。Q有单元测试覆盖吗A有。test.js负责 Node 端测试test-browser.js负责浏览器端测试确保两端行为一致。小结关注点crypto-hash 的答案体积浏览器端 ~300 字节gzip 后环境Node.js ≥ 18 现代浏览器一套代码算法SHA-1 / 256 / 384 / 512依赖零全部走原生加密 API如果你正在找一个轻量、同构、零依赖的哈希方案——无论是前端做内容指纹还是全栈项目统一哈希逻辑——crypto-hash 几乎是最省心的选择。装好后await sha256(...)这一行代码就是你要的全部 【免费下载链接】crypto-hashTiny hashing module that uses the native crypto API in Node.js and the browser项目地址: https://gitcode.com/gh_mirrors/cr/crypto-hash创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
分享:

看完干货,该让你的企业上线了

免费需求沟通 · 48 小时内出具建站方案 · 河南本地可上门