JS中常见编码及加密方式解析

yizhihongxing

JS中常见编码及加密方式解析

在JS中,常见的编码方式有:URL编码、Base64编码、HEX编码;常见的加密方式有:MD5加密、SHA1加密、对称加密和非对称加密。
本文将一一为您详细讲解,并提供相应的示例。

URL编码

URL编码是一种在网络上传输数据的编码方式,需要将数据中的特殊字符进行编码,以便网络进行传输和识别。在JS中我们可以使用encodeURI()函数和encodeURIComponent()函数分别对URL和URL参数进行编码。

示例:

var url = "http://www.example.com?key=value&name=张三";
var encodedURL = encodeURI(url)
console.log(encodedURL); //"http://www.example.com?key=value&name=%E5%BC%A0%E4%B8%89"

var param = "我是参数!";
var encodedParam = encodeURIComponent(param)
console.log(encodedParam); //"我%E6%98%AF%E5%8F%82%E6%95%B0%EF%BC%81"

Base64编码

Base64编码是一种将数据进行编码以便在网络上传输的方式,它可以将二进制数据转换为纯文本格式,常见于图片、音视频等二进制数据和一些加密算法中。

示例:

var originStr = "Hello, I am a base64 string.";
var encodedStr = btoa(originStr);
console.log(encodedStr); // "SGVsbG8sIEkgYW0gYSBiYXNlNjQgc3RyaW5nLg=="

var decodedStr = atob(encodedStr);
console.log(decodedStr); // "Hello, I am a base64 string."

HEX编码

HEX编码是一种将二进制数据转换成16进制形式的编码方式,由于16进制的字符集较为简单(只有0-9、A-F),因此可以减少数据发送的大小,常见的应用包括hash算法等。

示例:

var originStr = "Hello, I am a hex string.";
var encodedStr = "";
for (var i = 0; i < originStr.length; i++) {
  encodedStr += originStr.charCodeAt(i).toString(16);
}
console.log(encodedStr); // "48656c6c6f2c204920616d20612068657820737472696e672e"

var decodedStr = "";
for (var i = 0; i < encodedStr.length; i += 2) {
  var charCode = parseInt(encodedStr.substr(i, 2), 16);
  decodedStr += String.fromCharCode(charCode);
}
console.log(decodedStr); // "Hello, I am a hex string."

MD5加密

MD5是一种常见的加密算法,常用于检验信息传输完整性和防止数据被篡改。由于MD5是一种不可逆算法,因此可以用于对于密码等敏感信息的存储。

示例:

var originStr = "I am a string.";
var encodedStr = CryptoJS.MD5(originStr).toString();
console.log(encodedStr); // "8f9f8765dbcf5cb37a3595d7375c841b"

SHA1加密

SHA1也是一种常见的加密算法,常用于数字签名、数字证书、SSL通信等方面。同样,SHA1也是一种不可逆算法。

示例:

var originStr = "I am a string.";
var encodedStr = CryptoJS.SHA1(originStr).toString();
console.log(encodedStr); // "ebed656a941bcb0f38bf67c7368b1332b06abc53"

对称加密

对称加密是一种加密方式,使用的加密与解密算法相同,因此常用于保护隐私、认证、授权等操作。

示例:

var key = CryptoJS.enc.Hex.parse('000102030405060708090a0b0c0d0e0f');
var iv = CryptoJS.enc.Hex.parse('101112131415161718191a1b1c1d1e1f');
var plainText = '我爱编程!';
var encrypted = CryptoJS.AES.encrypt(plainText, key, {iv: iv});
console.log(encrypted.toString());

var decrypted = CryptoJS.AES.decrypt(encrypted, key, {iv: iv});
console.log(decrypted.toString(CryptoJS.enc.Utf8));

非对称加密

非对称加密是一种加密方式,采用的是公钥和私钥两种密钥。通常采用公钥加密、私钥解密的方式进行加密,或者私钥加密、公钥解密的方式进行数字签名等操作。

示例:

var ecPrivateKey = '-----BEGIN PRIVATE KEY-----\n' +
    'MHcCAQEEINkpJuwm2mtLcW6Q/4CboeCRRAsPEO93WDzW12Jf+oXHoAoGCCqGSM49\n' +
    'AwEHoUQDQgAE/JIJpIMdzM5E7Hc/ef+ZmpN/3z1TpanXyFWh1vJp07gNNGUT9Z5J\n' +
    'xUc1Mywoj4C26qgH4EcH9Z9OgrzlnGY3w==\n' +
    '-----END PRIVATE KEY-----';

var ecPublicKey = '-----BEGIN PUBLIC KEY-----\n' +
    'MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE/JIJpIMdzM5E7Hc/ef+ZmpN/3z1T\n' +
    'panXyFWh1vJp07gNNGUT9Z5JxUc1Mywoj4C26qgH4EcH9Z9OgrzlnGY3w==\n' +
    '-----END PUBLIC KEY-----';

var ecParams = {
    key: ecPrivateKey,
    format: 'pem',
    cipher: 'aes-256-cbc',
    passphrase: '123456'
};

var plainText = "hello world!";

// 加密
var encrypted = CryptoJS.Crypto.encrypt("ECC", plainText, ecParams, {pubkey: ecPublicKey});
console.log(encrypted.toString());

// 解密
var decrypted = CryptoJS.Crypto.decrypt("ECC", encrypted, ecParams);
console.log(decrypted.toString(CryptoJS.enc.Utf8));

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:JS中常见编码及加密方式解析 - Python技术站

(0)
上一篇 2023年5月20日
下一篇 2023年5月20日

相关文章

  • JS中的算法与数据结构之栈(Stack)实例详解

    JS中的算法与数据结构之栈(Stack)实例详解 什么是栈? 栈(Stack)是一种遵从后进先出(LIFO)原则的有序集合,是一种线性数据结构,只允许在栈顶进行插入和删除操作。 如何实现栈? JavaScript中可以通过数组来实现栈,使用数组的pop()、push()方法可以轻松地实现栈的相关操作。 创建一个栈(Stack)类 class Stack { …

    JavaScript 2023年5月27日
    00
  • Bootstrap table的使用方法

    以下是关于Bootstrap table的使用方法的完整攻略。 Bootstrap table是什么? Bootstrap table是一个基于Bootstrap开发的强大的表格插件,提供了丰富的功能和定制选项,使得开发人员可以快速创建高度定制化的表格。 如何引入Bootstrap table? 在使用Bootstrap table之前,我们需要先引入Boo…

    JavaScript 2023年6月11日
    00
  • JavaScript function函数种类详解

    JavaScript Function函数种类详解 JavaScript是一门非常强大的脚本语言,其中函数是最重要的部分之一。函数是用于执行特定任务的代码块,它接收输入并返回输出。JavaScript中的函数有多种种类。在这里,我们将详细探讨不同函数种类的特点和用法,并提供一些示例。 函数定义 在JavaScript中,定义函数有两种方法:函数声明和函数表达…

    JavaScript 2023年5月27日
    00
  • jQuery+Ajax+js实现请求json格式数据并渲染到html页面操作示例

    下面是实现请求JSON格式数据并渲染到HTML页面的完整攻略: 1. 准备工作 首先,我们需要在HTML页面中引入 jQuery 库,可以通过CDN链接或者下载到本地并引入。 然后,我们需要创建一个用来渲染数据的HTML元素,比如一个列表,例如: <ul id="list"></ul> 2. 请求JSON数据 接下…

    JavaScript 2023年5月27日
    00
  • JavaScript 版本自动生成文章摘要

    让我来详细讲解一下“JavaScript 版本自动生成文章摘要”的完整攻略。 1.介绍 文章摘要的作用是在文章列表中展示文章的主要内容和吸引读者的注意力。一般情况下,文章摘要是通过手动添加的方式生成的。但是,如果文章太多,手动添加就会变得非常繁琐。所以,我们可以使用JavaScript来自动生成文章摘要。 2.实现步骤 为了自动生成文章摘要,我们需要做以下几…

    JavaScript 2023年5月28日
    00
  • 微信小程序模板(template)使用详解

    微信小程序模板(template)使用详解 什么是微信小程序模板(template) 微信小程序模板是一种快速开发小程序的方式,类似于其他web开发中的样板(boilerplate)或模板(template)等概念。使用小程序模板,可以减少从零开始开发的代码量,加快小程序开发的速度。 如何使用微信小程序模板 在小程序开发工具中,选择“新建小程序”或“创建项目…

    JavaScript 2023年6月11日
    00
  • JavaScript实现广告弹窗效果

    JavaScript实现广告弹窗效果的攻略包含以下几个步骤: 1. 创建HTML结构 我们需要为广告弹窗准备一个HTML结构,可以在页面中创建一个div元素,然后在其中嵌套一个img标签和一个关闭按钮元素。其中,img标签的src属性设置为我们需要展示的广告图片地址。例如: <div id="ad"> <img src=…

    JavaScript 2023年6月11日
    00
  • 如何实现正则表达式的JavaScript的代码高亮

    要在网页中实现正则表达式的JavaScript代码高亮,可以采用Prism.js这个JavaScript库。 下面是实现的具体步骤: 1. 引入Prism.js 在网页的标签内添加下面的代码来引入Prism.js库: <link rel="stylesheet" href="https://cdnjs.cloudflare…

    JavaScript 2023年6月10日
    00
合作推广
合作推广
分享本页
返回顶部