golang token的生成和获取
本文内容纲要:
-golang加减密
golang加减密
token的生成和获取
//GetToken获取token
funcGetToken(appId,userId,deviceIdint64,expireint64,publicKeystring)(string,error){
info:=TokenInfo{
AppId:appId,
UserId:userId,
DeviceId:deviceId,
Expire:expire,
}
bytes,err:=json.Marshal(info)
iferr!=nil{
logger.Sugar.Error(err)
return"",err
}
token,err:=RsaEncrypt(bytes,[]byte(publicKey))
iferr!=nil{
return"",err
}
returnbase64.StdEncoding.EncodeToString(token),nil
}
//DecryptToken对加密的token进行解码
funcDecryptToken(tokenstring,privateKeystring)(*TokenInfo,error){
bytes,err:=base64.StdEncoding.DecodeString(token)
iferr!=nil{
logger.Sugar.Error(err)
returnnil,err
}
result,err:=RsaDecrypt(bytes,Str2bytes(privateKey))
iferr!=nil{
logger.Sugar.Error(err)
returnnil,err
}
varinfoTokenInfo
err=jsoniter.Unmarshal(result,&info)
iferr!=nil{
logger.Sugar.Error(err)
returnnil,err
}
return&info,nil
}
加减密
//公钥生成
//opensslrsa-inrsa_private_key.pem-pubout-outrsa_public_key.pem
//加密
funcRsaEncrypt(origData[]byte,publicKey[]byte)([]byte,error){
//解密pem格式的公钥
block,_:=pem.Decode(publicKey)
ifblock==nil{
returnnil,errors.New("publickeyerror")
}
//解析公钥
pubInterface,err:=x509.ParsePKIXPublicKey(block.Bytes)
iferr!=nil{
returnnil,err
}
//类型断言
pub:=pubInterface.(*rsa.PublicKey)
//加密
returnrsa.EncryptPKCS1v15(rand.Reader,pub,origData)
}
//解密
funcRsaDecrypt(ciphertext[]byte,privateKey[]byte)([]byte,error){
//解密
block,_:=pem.Decode(privateKey)
ifblock==nil{
returnnil,errors.New("privatekeyerror!")
}
//解析PKCS1格式的私钥
priv,err:=x509.ParsePKCS1PrivateKey(block.Bytes)
iferr!=nil{
returnnil,err
}
//解密
returnrsa.DecryptPKCS1v15(rand.Reader,priv,ciphertext)
}
本文内容总结:golang加减密,
原文链接:https://www.cnblogs.com/tomtellyou/p/12769270.html