时间:2021-05-26
前言
最近遇到的几个网站在提交密码时提交的已经是密文,也就是说在网络上传输的密码是密文,这样提升了密码在网络传输中的安全性。
后端语言加解密已经有很成熟的方案了,前端的话Google之前出过一个crypto-js,为浏览器的js提供了加解密方案。今天一起来了解一下基于AES的前后端加解密流程。
Javascript
1、安装npm包 npm install crypto-js
2、加密代码
const CryptoJS = require("crypto-js");const key = CryptoJS.enc.Latin1.parse('1234567812345678');const iv = CryptoJS.enc.Latin1.parse('1234567812345678');const encoded = CryptoJS.AES.encrypt('hahaha', key, { iv: iv, mode: CryptoJS.mode.CBC, adding: CryptoJS.pad.ZeroPadding}).toString()console.log('encoded', encoded)3、解密代码
const key = CryptoJS.enc.Latin1.parse('123456781234567812345678');const iv = CryptoJS.enc.Latin1.parse('1234567812345678');const decoded = CryptoJS.AES.decrypt(encoded, key, { iv: iv, mode: CryptoJS.mode.CBC, adding: CryptoJS.pad.ZeroPadding}).toString(CryptoJS.enc.Utf8)console.log('decoded', decoded);4、输出如下
encoded 6bcgYd4f4ZgNOQH/3tqMpg==
decoded hahaha
PHP
直接使用openssl解密即可,代码如下:
$encoded = '6bcgYd4f4ZgNOQH/3tqMpg==';$key = '123456781234567812345678';$iv = '1234567812345678';var_dump(openssl_decrypt($encoded, 'AES-192-CBC', $key, 0,$iv));输出结果:
string(6) "hahaha"
注意事项
1、AES加密位数跟密钥key有关, 以下是密钥位数和加密对应关系
2、iv是初始化向量. 超过16字节或者不足16字节都会被补足16字节或者截断到16字节。由于AES是块加密,铭文被分割成固定长度的块(一般是16字节长度),所以iv也是16字节。
3、CBC是加密模式
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对的支持。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
使用非对称加密主要是借助openssl的公钥和私钥,用公钥加密私钥解密,或者私钥加密公钥解密。1.安装openssl和php的openssl扩展2.生成私钥:o
本文实例为大家分享了python实现AES加密和解密的具体代码,供大家参考,具体内容如下参考:python实现AES加密和解密AES加密算法是一种对称加密算法,
本文实例讲述了java使用Hex编码解码实现Aes加密解密功能。分享给大家供大家参考,具体如下:这里的Aes加密解密方法使用Hex进行了编码解码packagec
在Java世界中,AES、DES加密解密需要使用Cipher对象构建加密解密系统,Hutool中对这一对象做再包装,简化了加密解密过程。介绍AES和DES同属对
前言Laravel的加密机制使用OpenSSL提供AES-256和AES-128的加密,本文将详细介绍关于Laravel中encrypt和decrypt的实现,