在前端开发中,数据加密是常见需求,比如用户密码加密、接口签名、数据完整性校验等。常见的加密算法有 MD5、SHA1、SHA256、SHA512 等。今天就教你如何在 JS(浏览器和 Node.js)中实现这些加密算法!🚀
1️⃣ MD5 加密
🔸 MD5 目前已不安全,但常用于简单校验。
浏览器端实现
推荐使用 blueimp-md5 或 spark-md5:
<script src="https://cdn.jsdelivr.net/npm/blueimp-md5@2.19.0/js/md5.min.js"></script>
<script>
const hash = md5('hello world');
console.log(hash); // 5eb63bbbe01eeed093cb22bb8f5acdc3
</script>
Node.js 实现
const crypto = require('crypto');
const hash = crypto.createHash('md5').update('hello world').digest('hex');
console.log(hash); // 5eb63bbbe01eeed093cb22bb8f5acdc3
2️⃣ SHA256 加密
🔸 SHA256 更安全,常用于签名、密码加密。
浏览器端实现
可以用 js-sha256:
<script src="https://cdn.jsdelivr.net/npm/js-sha256@0.9.0/build/sha256.min.js"></script>
<script>
const hash = sha256('hello world');
console.log(hash); // b94d27b9934d3e08a52e52d7da7dabfa...
</script>
Node.js 实现
const crypto = require('crypto');
const hash = crypto.createHash('sha256').update('hello world').digest('hex');
console.log(hash); // b94d27b9934d3e08a52e52d7da7dabfa...
3️⃣ SHA512 加密
浏览器端实现
依然可以用 js-sha512:
<script src="https://cdn.jsdelivr.net/npm/js-sha512@0.9.0/build/sha512.min.js"></script>
<script>
const hash = sha512('hello world');
console.log(hash); // 309ecc489c12d6eb4cc40f50c902f2b4...
</script>
Node.js 实现
const crypto = require('crypto');
const hash = crypto.createHash('sha512').update('hello world').digest('hex');
console.log(hash); // 309ecc489c12d6eb4cc40f50c902f2b4...
4️⃣ Web Crypto API (现代浏览器原生支持)
// SHA-256 示例
async function sha256(message) {
const msgBuffer = new TextEncoder().encode(message);
const hashBuffer = await crypto.subtle.digest('SHA-256', msgBuffer);
const hashArray = Array.from(new Uint8Array(hashBuffer));
return hashArray.map(b => b.toString(16).padStart(2, '0')).join('');
}
sha256('hello world').then(console.log);
5️⃣ 常见第三方加密库推荐
- crypto-js(支持 MD5、SHA1、SHA256、Hmac 等多种算法)
- js-sha256
- js-md5
- blueimp-md5
📝 总结
- 前端常用加密算法有 MD5、SHA1、SHA256、SHA512 等。
- 推荐用 SHA256 及以上算法,MD5 仅限校验场景。
- 浏览器建议用第三方库或 Web Crypto API,Node.js 直接用
crypto模块。 - 加密算法不可逆,适合校验、签名,不适合存储明文敏感数据!
💡 你还用过哪些加密算法?欢迎评论区留言交流!点赞、收藏不迷路!