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

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简单遍历获取对象中的属性值的方法示例

    下面是关于“JS简单遍历获取对象中的属性值的方法示例”的完整攻略: 什么是JS对象? 在JavaScript中,对象是一种复杂的数据类型,它允许开发人员存储和组织以键值对的方式描述的数据。对象通常使用大括号{}来表示,其中键和值之间使用冒号:连接。 在JS中,对象中的属性值可以是任意数据类型。 示例: var person = { name: "张…

    JavaScript 2023年5月27日
    00
  • javascript的函数、创建对象、封装、属性和方法、继承

    下面我将详细讲解JavaScript中函数、创建对象、封装、属性和方法、继承的完整攻略,并且会给出至少两个示例。 函数 函数的定义 函数是一段被封装起来的可复用代码块。在 JavaScript 中,函数可以通过 function 关键字来定义。函数定义的一般语法格式为: function functionName(param1, param2, …){ …

    JavaScript 2023年5月27日
    00
  • 深入解析el-col-group强大且灵活的Element表格列组件

    深入解析el-col-group强大且灵活的Element表格列组件 什么是el-col-group? el-col-group是Element UI表格中列的分组或者嵌套的组件。与el-table-column相比,它具有更强大和灵活的功能。 如何使用el-col-group? 使用el-col-group前需要引入Element UI组件库,然后在代码中…

    JavaScript 2023年6月10日
    00
  • JavaScript编程的10个实用小技巧

    JavaScript编程的10个实用小技巧 JavaScript编程是现代Web开发中不可或缺的一部分。为了更好地利用JavaScript进行编程,我们需要学习许多小技巧,这些小技巧能够帮助我们更加轻松快捷地编写代码。本文将介绍JavaScript编程的10个实用小技巧。 1. 使用模板字面量 在JavaScript中,我们可以使用模板字面量来轻松创建格式化…

    JavaScript 2023年5月18日
    00
  • javascript异步处理工作机制详解

    Javascript异步处理工作机制详解 异步处理是Javascript中的重要概念,它允许代码在等待I/O事件、AJAX请求等等时不阻塞当前线程。本文将介绍Javascript中的异步处理机制及其实现方式。 回调函数 Javascript中最常用的方式实现异步编程是使用回调函数。简单来说,在一个异步函数完成后,会执行一个回调函数,这个回调函数就是异步函数的…

    JavaScript 2023年6月11日
    00
  • JavaScript window.location对象

    JavaScript中的window.location对象用于获取或设置浏览器当前打开页面的URL地址信息,它包含了当前页面的所有信息,如:协议、主机名、路径、查询字符串等等。接下来我们将详细讲述该对象的使用。 获取当前页面信息 我们可以使用window.location对象来获取当前页面的相关信息,如下所示: // 获取当前页面的协议,如:http、htt…

    JavaScript 2023年5月27日
    00
  • IE8 原生JSON支持

    IE8 原生 JSON 支持是指 Internet Explorer 8(IE8)浏览器中自带了对 JSON 数据格式的支持。在 IE8 之前的版本中,如果要使用 JSON 格式的数据,需要引入第三方库来解析或者手写解析函数。而在 IE8 中,开发者可以直接使用浏览器提供的全局对象 JSON 来解析和序列化 JSON 格式的数据,无需引入其他库。 为了使用 …

    JavaScript 2023年5月27日
    00
  • JavaScript中定义函数的三种方法

    在JavaScript中,定义函数有三种方法,分别是函数声明、函数表达式和箭头函数。 函数声明 函数声明是最常见的定义函数的方法,格式如下: function functionName(parameters) { // 函数体 } 其中,functionName为函数的名称,parameters为函数所需的参数,函数体中包含执行的代码。例如: functio…

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