zoukankan      html  css  js  c++  java
  • RSA加密——前端JSEncrypt

    RSA加密——前端JSEncrypt

    介绍

    ​ JSEncrypt是一个RSA加密库,在没有SSL加密传输通道支持https协议的情况下,该库可以在http传输重要信息如时,保证数据的安全性。我们小组的DDLKiller项目“同步课程中心”的功能需要输入北航学生统一认证账号密码,而统一认证账户对于每位北航同学都尤为重要,一旦泄露将影响个人学业信息及日常学习生活,因此对统一认证密码加密至关重要。此外,由于该加密库使用之后容易拓展,因此我们也在需要传输密码的部分(如登录、注册)使用了加密。

    使用

    安装

    npm install jsencrypt --dep
    

    加密

    const pub_key = "xxx"
    function encrypt(password) {
    	let enc = new JSEncrypt()	// 声明一个新的JSEncrypt对象
    	enc.setPublicKey(pub_key)	// 配置公钥
    	return enc.encrypt(password)	// 加密
    }
    

    改进

    ​ 为了能够更进一步提高安全性,在Beta阶段我们采用了动态生成随机密钥的方式进行加密,思路为:每次加密前,向后端请求一份随机密钥以及该密钥对应的kid,之后将kid与加密后的密码拼接在一起,用|分隔,作为最终的加密密码返回。这样,后端就能够根据kid找到密钥,进行解密。

    async function encrypt(password) {
        var encPass = ""
        await getPubKey().then(res => {  // 等待获取密钥
            let enc = new JSEncrypt()
            enc.setPublicKey(res.pub_key)	// 配置公钥
            encPass = "kid:" + res.key_id + "|" + enc.encrypt(password) // 拼接密文
        })
        return encPass 
    }
    
  • 相关阅读:
    23种设计模式之单例模式
    Java基础之IO技术(一)
    spark利用yarn提交任务报:YARN application has exited unexpectedly with state UNDEFINED
    linux配置了dns后导致mysql远程连接慢问题
    发布网站后localhost可以访问ip不行
    electron编译sqlite3
    vscode文件树缩进
    js判断浏览器类型
    vue可复用slide动画
    vscode使用formate格式化less遇到的坑
  • 原文地址:https://www.cnblogs.com/kingkongk/p/13046750.html
Copyright © 2011-2022 走看看