web前端用到的加密处理

web前端用到的加密技术

Base64

Base64是网络上最常见的用于传输8Bit字节码的编码方式之一,Base64就是一种基于64个可打印字符来表示二进制数据的方法。可查看RFC2045~RFC2049,上面有MIME的详细规范。

Base64编码是从二进制到字符的过程,可用于在HTTP环境下传递较长的标识信息。采用Base64编码具有不可读性,需要解码后才能阅读。

Base64由于以上优点被广泛应用于计算机的各个领域,然而由于输出内容中包括两个以上“符号类”字符(+, /, =),不同的应用场景又分别研制了Base64的各种“变种”。为统一和规范化Base64的输出,Base62x被视为无符号化的改进版本

node.js中的简单用法

  • npm中安装下载

     npm install --save js-base64
    //此文件来源于https://github.com/dankogai/js-base64/blob/master/base64.html
    
  • 引入文件

    var Base64 = require('js-base64').Base64;
    
  • 基本用法

    // 引入base64包
    var Base64 = require('js-base64').Base64;
    //加密
    console.log(Base64.encode('english'));
    console.log(Base64.encode('英语'));
    console.log(Base64.encodeURI('英语'));
    //解密
    console.log(Base64.decode('ZW5nbGlzaA=='));
    console.log(Base64.decode('6Iux6K+t'));
    // 注意: .decodeURI()是不必要的,因为它接受这两种风格
    console.log(Base64.decode('6Iux6K-t'));
    

MD5加密

MD5信息摘要算法(英语:MD5 Message-Digest Algorithm),一种被广泛使用的密码散列函数,可以产生出一个128位(16字节)的散列值(hash value),用于确保信息传输完整一致。MD5由美国密码学家罗纳德·李维斯特(Ronald Linn Rivest)设计,于1992年公开,用以取代MD4算法。这套算法的程序在 RFC 1321 标准中被加以规范。1996年后该算法被证实存在弱点,可以被加以破解,对于需要高度安全性的数据,专家一般建议改用其他算法,如SHA-2。2004年,证实MD5算法无法防止碰撞(collision),因此不适用于安全性认证,如SSL公开密钥认证或是数字签名等用途。

MD5加密原理是散列算法,散列算法也称哈希算法。比如10除以3余数为一,4除以3余数也为一,但余数为一的就不知道这个数是哪个了。所以md5不能解密。就算是设计这个加密算法的人都不知道。但是你的密码是怎么验证的呢?就是因为同一密码加密后一定相同。你输入密码加密后才能知道你的密码是否正确。也就是说,你的密码只有你自己知道。

MD5加密的算法是单向不可逆的。

node.js中的简单用法

  • npm中安装下载

    npm install blueimp-md5
    //此文件来源于:https://github.com/blueimp/JavaScript-MD5
    
  • 引入文件

    var md5 = require("blueimp-md5");
    
  • 基本用法

    //引入http模块以及md5包
    const http = require('http');
    const md5 = require("blueimp-md5");
    // 创建一个http实例
    http.createServer(function(req, res) {
        // 加密之后 响应到浏览器中
        res.end(md5('哈哈哈'))
    }).listen(8080, () => {
        console.log('端口8080监听成功');
    });
    

SHA加密

SHA(英语:Secure Hash Algorithm ,中文名:安全散列算法)是一种密码散列函数美国国家安全局设计,并由美国国家标准技术研究所(NIST)发布为联邦数据处理标准(FIPS)。

SHA加密的算法是单向不可逆的。

  • npm中安装下载

    npm install jssha
    //此文件来源于:https://github.com/Caligatio/jsSHA
    
  • 引入文件

    const jsSHA = require("jssha");
    
  • 基本用法

    使用所需的哈希类型,输入类型和选项作为参数实例化一个新的jsSHA对象。哈希类型可以是SHA-1,SHA-224,SHA3-224,SHA-256,SHA3-256,SHA-384,SHA3-384,SHA-512,SHA3-512,SHAKE128或SHAKE256中的一种。输入类型可以是HEX,TEXT,B64,BYTES或ARRAYBUFFER之一。然后,可以使用update对象函数输入流,如果需要,可以多次调用它。最后,只需getHash使用输出类型作为参数(B64,HEX,BYTES或ARRAYBUFFER)进行调用。计算“这是一个测试”的SHA-1的示例:

    const jsSHA = require("jssha");
    
    var shaObj = new jsSHA("SHA-1", "TEXT");
    shaObj.update("lzf123456 ");
    var hash = shaObj.getHash("HEX");
    // 69d7956d8d1b9737d17446f7a45d2af651eca047
    console.log(hash);
    

总结

  • 用js对私密信息加密可避免在网络中传输明文信息,被人截取数据包而造成数据泄露。
  • 避免缓存中自动缓存密码。比如在使用谷歌浏览器登陆时,输入的用户名和密码会自动缓存,下次登陆时无需输入密码就可以实现登陆,这样就给别人留下漏洞,当别人用你电脑登陆或把input的type改为test 那么你的密码就泄露了.使用js加密时,缓存的加密后的密文,用密文做密码登陆是不成功的,即使泄露也是泄露的密文,对密码不会造成威胁,缺点是每次登陆时都要手动输入密码,较麻烦。
  • 使用js加密,减少了服务器加密时的资源消耗,从理论上提高了服务器的性能。为了安全,很有必要再做服务器端的加密,无论从理论还是实际,两道门比一道门要安全些,至少给攻击者造成了一个障碍。
  • 当然,还有许多的加密处理方式(AES/DES加密解密,RSA加密等等),前端能处理的比较有限,想要做到更加安全就得需要在服务器中对用户的信息以及重要数据进行加密。

参考文章

  • 百度百科
  • https://www.jianshu.com/p/4c236d83ea04
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值