🔐 前端加密实用指南 | JS 实现 MD5、SHA256 等常见加密算法

2,193 阅读2分钟

在前端开发中,数据加密是常见需求,比如用户密码加密、接口签名、数据完整性校验等。常见的加密算法有 MD5、SHA1、SHA256、SHA512 等。今天就教你如何在 JS(浏览器和 Node.js)中实现这些加密算法!🚀


1️⃣ MD5 加密

🔸 MD5 目前已不安全,但常用于简单校验。

浏览器端实现

推荐使用 blueimp-md5spark-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️⃣ 常见第三方加密库推荐


📝 总结

  • 前端常用加密算法有 MD5、SHA1、SHA256、SHA512 等。
  • 推荐用 SHA256 及以上算法,MD5 仅限校验场景。
  • 浏览器建议用第三方库或 Web Crypto API,Node.js 直接用 crypto 模块。
  • 加密算法不可逆,适合校验、签名,不适合存储明文敏感数据!

💡 你还用过哪些加密算法?欢迎评论区留言交流!点赞、收藏不迷路!