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 
    }
    
  • 相关阅读:
    usb mass storage device
    spice
    ubuntu14.04.03 vsftpd
    MingW编译virt-viewer
    virt viewer Usbredir USB重定向
    libvirt虚拟系统如何增加usb设备
    Jquery控件jrumble
    【推荐系统实战】:C++实现基于用户的协同过滤(UserCollaborativeFilter)
    STL_算法_查找算法(binary_search、includes)
    POJ 2479 Maximum sum
  • 原文地址:https://www.cnblogs.com/kingkongk/p/13046750.html
Copyright © 2011-2022 走看看