前端常用加密小技巧:encode, MD5,JSEncrypt
创始人
2024-12-28 02:37:51
0

最近工作的时候,写了一个登录注册相关功能,用到了些加密的东西,特此分享~

什么是 MD5

MD5(Message Digest 5)是一种加密算法,用于生成数字消息或数据的固定长度(128 位)散列值。它是一种单向散列函数,这意味着无法从散列值中恢复原始消息。

作用

MD5 已广泛用于各种应用程序中,包括:

  • 数据完整性检查:验证数据的传输或存储是否未被篡改。
  • 密码保护:存储用户密码的散列值,而不是原始密码。
  • 数字签名:创建数字签名以验证消息的来源和完整性。

用法

要使用 MD5,需要使用 MD5 算法对输入数据进行散列。这可以通过使用编程语言中的 MD5 库或使用在线 MD5 计算器来完成。

下载和安装(使用 JavaScript)

JavaScript 中没有内置的 MD5 库。但是,可以使用 CryptoJS 库来实现 MD5 散列。

npm install crypto-js  const CryptoJS = require("crypto-js");   // 使用MD5加密 const message = "需要加密的信息"; const md5Value = CryptoJS.MD5(message).toString();   console.log(md5Value); // 输出MD5加密后的字符串

2.什么是JSEncrypt 

JSEncrypt 是一个用于在 JavaScript 中进行 RSA 加密和解密的开源库。它提供了一个方便且安全的界面,可让开发人员在 Web 应用程序中轻松实施加密功能。

作用

JSEncrypt 主要用于以下目的:

  • **加密敏感数据:**保护传输或存储的敏感数据(如密码、信用卡信息等)免遭未经授权的访问。
  • **数字签名:**创建安全的数字签名以验证消息的真实性和完整性。
  • **非对称加密:**实现非对称加密,其中使用一对公钥和私钥进行加密和解密。
  • **公钥基础设施 (PKI):**支持 PKI 系统的实施,该系统依赖于数字证书和信任链来验证实体的身份。

主要特点

JSEncrypt 库提供以下主要特点:

  • **基于标准:**它遵循 RSA 算法的 PKCS#1 v1.5 和 v2.1 标准。
  • **跨平台支持:**可以在各种 JavaScript 环境中使用,包括 Node.js 和 Web 浏览器。
  • **轻量级:**它是一个小巧且高效的库,不会对应用程序的性能产生重大影响。
  • **简单易用:**提供一个易于使用的 API,使开发人员可以轻松集成加密功能。
  • **安全:**它使用经过行业验证的加密算法和安全最佳实践。

JSEncrypt 加密的示例

npm install jsencrypt

import JSEncrypt from 'jsencrypt';

以下是一个使用 JSEncrypt 加密和解密文本的示例:

// 创建一个 JSEncrypt 实例 const encryptor = new JSEncrypt();  // 设置公钥(假设您已从证书颁发机构获得) encryptor.setKey("-----BEGIN PUBLIC KEY-----\ MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDO630wGp...省略公钥内容...0NGkO9gJ+i40v74G5g2Q==");  // 加密文本 const encrypted = encryptor.encrypt("这是要加密的文本");  // 解密文本(假设您有私钥) const decryptor = new JSEncrypt(); decryptor.setKey("-----BEGIN PRIVATE KEY-----\ MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoG...省略私钥内容...s7vd3Bk/vZ13m9v4k=\ -----END PRIVATE KEY-----\ "); const decrypted = decryptor.decrypt(encrypted);  console.log("加密后的文本:", encrypted); console.log("解密后的文本:", decrypted);

3:什么是 encode

encode 是一个将数据从一种格式转换为另一种格式的过程。它通常用于将二进制数据转换为文本格式,以便可以在网络上传输或存储。

encode 的类型

有许多不同的编码类型,包括:

  • **Base64:**一种将二进制数据转换为文本字符串的编码。通常用于在电子邮件和 URL 中传输数据。
  • **UTF-8:**一种将 Unicode 字符转换为字节序列的编码。通常用于在 Web 上传输文本。
  • **URL 编码:**一种将字符转换为安全字符的编码,以便它们可以在 URL 中使用。
  • **HTML 实体编码:**一种将字符转换为 HTML 实体的编码。通常用于在 HTML 文档中转义特殊字符。
const originalString = "Hello World!"; const encodedString = btoa(originalString); // Base64 编码 console.log(encodedString); // 输出:SGVsbG8gV29ybGQh
const originalString = "你好,世界!"; const encodedString = encodeURIComponent(originalString); // UTF-8 编码 console.log(encodedString); // 输出:%E4%BD%A0%E5%A5%BD%E4%B8%96%E7%95%8C%EF%BC%81
const originalString = "Hello World! This is a test."; const encodedString = encodeURIComponent(originalString); // URL 编码 console.log(encodedString); // 输出:Hello%20World%21%20This%20is%20a%20test%2E
const originalString = ""; const encodedString = escape(originalString); // HTML 实体编码 console.log(encodedString); // 输出:%3Cscript%3Ealert%28%27XSS%20attack%27%29%3C%2Fscript%3E

相关内容

热门资讯

九分钟了解!决战卡五星技巧规律... 九分钟了解!决战卡五星技巧规律,菠萝德州app一直有挂,2025教程(有挂透视);1、金币登录送、破...
九分钟普及!牌乐门app怎么提... 九分钟普及!牌乐门app怎么提高胜率,aapoker原来有挂,揭秘教程(有挂解说);1、实时牌乐门a...
三分钟了解!欢乐茶馆免费辅助设... 三分钟了解!欢乐茶馆免费辅助设置,德州ai真是真的是有挂,力荐教程(有挂攻略)1、下载好欢乐茶馆免费...
七分钟发现!天府之城麻将挂,w... 七分钟发现!天府之城麻将挂,wPK好像真的有挂,第三方教程(有挂黑科技)1)天府之城麻将挂辅助挂:进...
4分钟发现!中至赣州辅助器下载... 4分钟发现!中至赣州辅助器下载,云扑克德州竟然真的是有挂,软件教程(有挂解说)在进入中至赣州辅助器下...
微扑克系统发牌规律(微扑克微乐... 微扑克系统发牌规律(微扑克微乐)透视辅助教程(透视)都是有挂(详细辅助软件教程);(需添加指定薇75...
wpk有外卦挂!(wpk胜率)... wpk有外卦挂!(wpk胜率)透视辅助教程(透明挂)竟然真的是有挂(详细外卦挂教程);亲,其实确实真...
wpk外卦挂!(WPK小程序)... wpk外卦挂!(WPK小程序)透视辅助软件(透视辅助)果然真的有挂(详细透视辅助工具教程)准备好在i...
微扑克游戏辅助器(微扑克中牌率... WePoker透视辅助版本解析‌,微扑克游戏辅助器(微扑克中牌率)透视辅助教程(辅助挂)果然真的是有...
wpk有外卦挂!(WPK德州版... wpk有外卦挂!(WPK德州版)透视辅助器(透视辅助)切实有挂(详细透视辅助教程);精心打造了俱乐部...