白酒新熟山中归,黄鸡啄黍秋正肥。 呼童烹鸡酌白酒,儿女嬉笑牵人衣。 高歌取醉欲自慰,起舞落日争光辉。 游说万乘苦不早,著鞭跨马涉远道。 会稽愚妇轻买臣,余亦辞家西入秦。 仰天大笑出门去,我辈岂是蓬蒿人。

Golang 签名

// createSignature 生成签名
// @signStr outId
// @DevRsaPrivateKey 私钥
func (s *Service) CreateSignatureWithMd5(signStr string, privateKey string) (string, error) {
//如果密钥是urlSafeBase64的话需要处理下
prvKey := s.base64URLDecode(privateKey)
keyBytes, err := base64.StdEncoding.DecodeString(prvKey)
if err != nil {
fmt.Println("DecodeString:", err)
return "", err
}
privateKey1, err := x509.ParsePKCS8PrivateKey(keyBytes)
if err != nil {
fmt.Println("ParsePKCS8PrivateKey", err)
return "", err
}
h := md5.New()
h.Write([]byte(signStr))
hash := h.Sum(nil)
signature, err := rsa.SignPKCS1v15(rand.Reader, privateKey1.(*rsa.PrivateKey), crypto.MD5, hash[:])
if err != nil {
fmt.Println("SignPKCS1v15:", err)
return "", err
}
out := base64.RawURLEncoding.EncodeToString(signature)
return out, nil
}

// RsaVerifySignWithMd5 验签
// @originalData outID
// @signData 签名
// @rsaPublicKey 公钥
func (s *Service) RsaVerifySignWithMd5(originalData, signData, rsaPublicKey string) error {
sign, err := base64.RawURLEncoding.DecodeString(signData)
if err != nil {
fmt.Println("DecodeString:", err)
return err
}
rsaPublicKey = s.base64URLDecode(rsaPublicKey)
publicString, err := base64.StdEncoding.DecodeString(rsaPublicKey)
if err != nil {
fmt.Println("DecodeString")
return err
}
pub, err := x509.ParsePKIXPublicKey(publicString)
if err != nil {
fmt.Println("ParsePKIXPublicKey", err)
return err
}
hash := md5.New()
hash.Write([]byte(originalData))
return rsa.VerifyPKCS1v15(pub.(*rsa.PublicKey), crypto.MD5, hash.Sum(nil), sign)
}

//因为Base64转码后可能包含有+,/,=这些不安全的URL字符串,所以要进行换字符
// '+' -> '-'
// '/' -> '_'
// '=' -> ''
// 字符串长度不足4倍的位补"="
func (s *Service) base64URLDecode(data string) string {
var missing = (4 - len(data)%4) % 4
data += strings.Repeat("=", missing) //字符串长度不足4倍的位补"="
data = strings.Replace(data, "_", "/", -1)
data = strings.Replace(data, "-", "+", -1)
return data
}
posted @ 2021-03-15 09:55  格罗玛什·地狱咆哮  阅读(519)  评论(0编辑  收藏  举报

君不见黄河之水天上来,奔流到海不复回。
君不见高堂明镜悲白发,朝如青丝暮成雪。
人生得意须尽欢,莫使金樽空对月。
天生我材必有用,千金散尽还复来。
烹羊宰牛且为乐,会须一饮三百杯。
岑夫子,丹丘生,将进酒,君莫停。
与君歌一曲,请君为我侧耳听。
钟鼓馔玉何足贵,但愿长醉不复醒。
古来圣贤皆寂寞,惟有饮者留其名。
陈王昔时宴平乐,斗酒十千恣欢谑。
主人何为言少钱,径须沽取对君酌。
五花马,千金裘,呼儿将出换美酒,与尔同销万古愁。