需要首先在golang中生成keypair,javascript向golang发送数据前,先申请publickey API获取publickey,而后基于publickey加密数据,最初将被加密的数据发送给golang。
实现一、golang生成keypairvar ( privateKey *rsa.PrivateKey publicKey *rsa.PublicKey publicKeyString string)if pri, err := rsa.GenerateKey(rand.Reader, 32); err != nil { panic(err)} else { privateKey = pri publicKey = &pri.PublicKey}// 将publicKey转换为PKIX, ASN.1 DER格局if derPkix, err := x509.MarshalPKIXPublicKey(publicKey); err != nil { return err} else { // 设置PEM编码构造 block := pem.Block{ Type: "RSA PUBLIC KEY", Bytes: derPkix, } // 将publicKey以字符串模式返回给javascript publicKeyString = string(pem.EncodeToMemory(&block))}二、javascript应用publickey加密数据装置jsencrypt
npm install jsencrypt获取publickey
const [pk, setPK] = useState('')useEffect(() => { fetch(`${url}`, {method: 'GET'}) .then(r => r.json()) .then(d => { if (d.hasOwnProperty('public_key')) setPK(d.public_key) else alert('API返回值短少必要字段!') }) .catch(e => {alert(e)})}, [])加密用户数据
...