zoukankan      html  css  js  c++  java
  • Golang处理前端RSA加密数据

    前后端RSA加密

    项目进入代码refine阶段,对登录发送密码进行RSA算法加密

    生成公钥私钥

    私钥

    openssl genrsa -out rsa_1024_priv.pem 1024
    

    根据私钥生成公钥

    openssl rsa -pubout -in rsa_1024_priv.pem -out rsa_1024_pub.pem
    

    将公钥保存到后端,私钥发给前端

    我这里使用分别使用常量保存私钥

    前端

    使用JSEncrypt

    var encrypt = new JSEncrypt();
    encrypt.setPublicKey(publick_key_content);
    var encrypted = encrypt.encrypt(password_value);
    

    后端

    // 解密 发送过来的数据
    func RsaDecrypt(ciphertext []byte) ([]byte, error) {
    	block, _ := pem.Decode([]byte(privateKey))
    	if block == nil {
    		return nil, errors.New("private key error!")
    	}
    	priv, err := x509.ParsePKCS1PrivateKey(block.Bytes)
    	if err != nil {
    		return nil, errors.Wrap(err, fmt.Sprintf("Parse private key  error:%s", err))
    	}
    	return rsa.DecryptPKCS1v15(rand.Reader, priv, ciphertext)
    }
    
    // 登录handler的处理
    encryptPwd := '加密的密码'
    b, err := base64.StdEncoding.DecodeString(encryptPwd)
    if err != nil {
        ....
    }
    decryptPwd, err := RsaDecrypt(b)
    if err != nil {
        .....
    }
    // save 
    
  • 相关阅读:
    联考20200520 T2 函数
    联考20200520 T1 石子游戏
    模拟赛T2 中继系统
    模拟赛T2 仙人掌毒题
    BZOJ3462 DZY Loves Math II
    20200129模拟赛T1 string
    BZOJ1316 树上的询问
    BZOJ4559 成绩比较
    JZOJ4238 纪念碑
    BZOJ 2648 世界树
  • 原文地址:https://www.cnblogs.com/mrylong/p/11347798.html
Copyright © 2011-2022 走看看