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

 更新时间:2022年04月12日 10:12:17   作者:Jeff的技术栈  
这篇文章主要为大家介绍了JS中常见编码及加密方式解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步早日升职加薪

base64

#特征:结尾可能有"=="号
#编码
# 想将字符串转编码成base64,要先将字符串转换成二进制数据
url = "https://www.cnblogs.com/songzhixue/"
bytes_url = url.encode("utf-8")
str_url = base64.b64encode(bytes_url)  # 被编码的参数必须是二进制数据
print(str_url)
b'aHR0cHM6Ly93d3cuY25ibG9ncy5jb20vc29uZ3poaXh1ZS8='
#解码
# 将base64解码成字符串
import base64
url = "aHR0cHM6Ly93d3cuY25ibG9ncy5jb20vc29uZ3poaXh1ZS8="
str_url = base64.b64decode(url).decode("utf-8")
print(str_url)
'https://www.cnblogs.com/songzhixue/'

Md5

#注意:md5是哈希,不是加密
#特征:32位
#1.编码
md = hashlib.md5()   #  加密,不可逆
md.update('hello'.encode('utf-8'))   # 往对象里传数据加密  ,update只能接受bytes类型
md.update(b'hello')
print(md.hexdigest())
结果:23b431acfeb41e15d466d75de822307c

#编码加盐
#2.加盐  :自己添加的东西和客户的真密码一起加密,自己添加的东西可以是动态的
md = hashlib.md5()
md.update(b'yan.com')
md.update(b'hello')   # 加密
print(md.hexdigest())  # 获取密文

AES

特征:对称加密,加密解密用的是同样的密钥。对称加密是最快速、最简单的一种加密方式

对称加密:适合经常发送数据的场合

非对称加密:加密和解密用的密钥是不同的,通常加密解密的速度比较慢,适合偶尔发送数据的场合。优点是密钥传输方便。

AES的三要素

密钥:128、192、256

填充:
    NoPadding
    PKCS7Padding
    ZeroPadding
    AnsiX923
    lso10126
    lso97971

工作模式:
    CBC、ECB、CTR、CFB、OFB

AES工作模式区别

工作模式:
    CBC、ECB、CTR、CFB、OFB

ECB模式:    

1、简单 

2、有利于计算

3、相同的明文块经过加密会变成相同的密文块,因此安全性较差

CBC模式:

1、无法并行计算,性能上不如ECB

2、引入初始化向量IV,增加复杂度。

3、安全性高

AES的加密流程

1、把明文按照128bit拆分成若干个明文块

2、按照选择的填充模式来填充最后一个明文块

3、每个明文块利用AES加密器和密钥,加密成密文块

JS-AES、base64、SHA256、RSA等加解密库

#利用nodejs中的crypto-js库
var CryptoJS = require("crypto-js")
CryptoJS.AES.encrypt(text,CryptoJS.enc.UTF8.parse(key),data={})

AES的特点、特征

1、有iv的是特征的是CBC工作模式

2、mode和padding标示的加密模式、填充方式

iv:初始向量

mode:工作模式

padding:填充方式

Ascii码

Ascii码是一种特定的编码方式,流行于欧洲国家,表达128常见的字符与操作符,表达力有限

DES

DES全称为Data Encryption Standard,即数据加密标准,是一种使用密钥加密的块算法,1977年被美国联邦政府的国家标准局确定为联邦资料处理标准(FIPS),并授权在非密级政府通信中使用,随后该算法在国际上广泛流传开来。

需要注意的是,在某些文献中,作为算法的DES称为数据加密算法(Data Encryption Algorithm,DEA),已与作为标准的DES区分开来。

以上就是JS中常见编码及加密方式解析的详细内容,更多关于JS编码及加密方式的资料请关注脚本之家其它相关文章!

相关文章

  • 页面中实现setInterval和setTimeout效果示例详解

    页面中实现setInterval和setTimeout效果示例详解

    这篇文章主要为大家介绍了不使用setTimeout和setInterval在页面中实现setInterval和setTimeout效果示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-09-09
  • 服务器端的JavaScript脚本 Node.js 使用入门

    服务器端的JavaScript脚本 Node.js 使用入门

    触爪伸向传说中的Server-Side Javascrpt。后端JS最出名无疑是Ryan Dahl的node.js,另一个是aptana IDE提供商搞出的jaxer,这里讨论node.js的使用
    2012-03-03
  • 如何在项目中使用log4.js的方法步骤

    如何在项目中使用log4.js的方法步骤

    这篇文章主要介绍了如何在项目中使用log4.js的方法步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-07-07
  • JavaScript中的ubound函数使用实例

    JavaScript中的ubound函数使用实例

    这篇文章主要介绍了JavaScript中的ubound函数使用实例,本文先是讲解了ubound函数的语法,然后给出了用法代码实例,需要的朋友可以参考下
    2014-11-11
  • javascript实现在指定元素中垂直水平居中

    javascript实现在指定元素中垂直水平居中

    当谈到网页的布局中,居中问题一直得不到很有效的解决,居中通常是相对于某一个元素的,比如我们经常所说的屏幕居中的问题,我们了解父元素的信息越多,我们就越能更加容易的实现居中布局。下面我们通过具体的实例来看看javascript如何来实现垂直水平居中
    2015-09-09
  • ES6 更易于继承的类语法的使用

    ES6 更易于继承的类语法的使用

    这篇文章主要介绍了ES6 更易于继承的类语法的使用,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-02-02
  • 详解BootStrap表单验证中重置BootStrap-select验证提示不清除的坑

    详解BootStrap表单验证中重置BootStrap-select验证提示不清除的坑

    这篇文章主要介绍了详解BootStrap表单验证中重置BootStrap-select验证提示不清除的坑,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-09-09
  • JS中fetch()用法实例详解

    JS中fetch()用法实例详解

    在JS中使用fetch更加高效地进行网络请求,下面这篇文章主要给大家介绍了关于JS中fetch()用法的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-09-09
  • Javascript的原型和原型链你了解吗

    Javascript的原型和原型链你了解吗

    这篇文章主要为大家详细介绍了Javascript的原型和原型链,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2022-03-03
  • Object.keys()、Object.values()、Object.entries()用法总结

    Object.keys()、Object.values()、Object.entries()用法总结

    本文主要介绍了Object.keys()、Object.values()、Object.entries()用法总结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-04-04

最新评论