
前端也会碰到需要做加解密和摘要的地方:接口参数要签名、本地敏感数据要加密存储、文件要算校验值、短链接要生成唯一标识。这些计算其实都能在浏览器里直接完成,不必什么都推给后端。自己拼算法是最容易出问题的做法,一个细节没处理好,看着能跑,实际上早就不安全了。用成熟的加密库,算法实现经过大量检验,稳定性靠得住得多,这次整理了 4 款开源免费、可商用的前端加密与哈希库。
四款库分别适合什么
CryptoJS 是前端最常用的加密库,AES、DES、TripleDES 对称加密,RSA 非对称加密,MD5、SHA 系列摘要和 HMAC 消息认证都支持,常见的加解密需求一个库基本能兜住。js-md5 专门算 MD5,支持文本和二进制数据,可以分批更新,体积小、调用简单,常用来生成文件指纹和缓存键。js-sha256 实现 SHA-256 和 SHA-224 摘要,纯 JavaScript 编写,浏览器和 Node 都能跑,支持增量更新和 HMAC,做接口签名很常用。bcryptjs 是专门给密码用的哈希算法实现,自带随机盐、计算成本可调,同样的密码每次加密结果都不同,能有效抵抗彩虹表攻击。
用之前得想清楚一件事
前端代码对用户是可见的,密钥写在页面里等于公开,所以真正敏感的加解密还是得放在服务端做,前端库更多是处理签名、摘要、校验这类场景。一个常见误区是把密码在前端哈希一下再传给后端就觉得安全了,其实这样只是把哈希值变成了新的密码,传输还是要靠 HTTPS 来保护。另一个要留意的是摘要算法的选择,MD5 和 SHA-1 早就不适合做安全用途了,用来做文件指纹或缓存键没问题,但涉及防篡改就得换 SHA-256 这类更强的算法。
包内容和用法
压缩包里按库名分成了四个目录,每个目录里放了压缩版和带注释的非压缩版两种文件,正式项目引 min 版,调试的时候看非压缩版。四款库互相独立、不依赖任何框架,用 script 标签引入就能用。选型上按需挑就行:需要多种算法用 CryptoJS,只要单一摘要用对应的轻量库,密码存储用 bcryptjs。每个目录都附带了说明文档和许可文件,写了基础用法和常用参数,拿到手照着改就行。
加密和摘要属于那种平时不显眼、一出问题就是大事的基础能力,与其每个项目重新写一遍,不如把这套工具收进自己的工具箱,配一次到处能用。动手前先确认清楚项目里要的是防篡改还是只做个唯一标识,别拿 MD5 去做安全校验,用错算法比不用还糟。这四款加起来三百多 KB,按需引入几乎不占体积。全部可免费商用、修改和再分发,保留各自的许可文件即可。后面还会继续整理前端开发常用的组件和工具合集,需要的可以先收藏。
























暂无评论内容