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 
    
  • 相关阅读:
    css 布局方式
    初识cv
    CSS 样式表{二}
    获取设备通讯录信息
    iOS Block界面反向传值小demo
    在iOS中如何正确的实现行间距与行高
    iOS开发- 获取本地视频文件
    view围绕圆心自转
    监测网络状态
    简单的九宫格算法与使用
  • 原文地址:https://www.cnblogs.com/mrylong/p/11347798.html
Copyright © 2011-2022 走看看