Golang에서 RSA 서명(SHA256withRSA) 수행
8920 단어 Go
이제 개인 키 서명된 코드를 공유합니다.
package common
import (
"crypto"
"crypto/rand"
"crypto/rsa"
"crypto/x509"
"encoding/base64"
"encoding/pem"
"errors"
"sort"
"strings"
)
const (
PEM_BEGIN = "-----BEGIN RSA PRIVATE KEY-----
"
PEM_END = "
-----END RSA PRIVATE KEY-----"
)
func RsaSign(signContent string, privateKey string, hash crypto.Hash) string {
shaNew := hash.New()
shaNew.Write([]byte(signContent))
hashed := shaNew.Sum(nil)
priKey, err := ParsePrivateKey(privateKey)
if err != nil {
panic(err)
}
signature, err := rsa.SignPKCS1v15(rand.Reader, priKey, hash, hashed)
if err != nil {
panic(err)
}
return base64.StdEncoding.EncodeToString(signature)
}
func ParsePrivateKey(privateKey string)(*rsa.PrivateKey, error) {
privateKey = FormatPrivateKey(privateKey)
// 2、 ,
block, _ := pem.Decode([]byte(privateKey))
if block == nil {
return nil, errors.New(" !")
}
// 3、 DER ,
priKey, err := x509.ParsePKCS1PrivateKey(block.Bytes)
if err != nil {
return nil, err
}
return priKey, nil
}
func FormatPrivateKey(privateKey string) string {
if !strings.HasPrefix(privateKey, PEM_BEGIN) {
privateKey = PEM_BEGIN + privateKey
}
if !strings.HasSuffix(privateKey, PEM_END) {
privateKey = privateKey + PEM_END
}
return privateKey
}
RsaSign 함수 매개변수 설명:
사용 방법:
sign = RsaSign(signContent, privateKey, crypto.SHA256)
SHAwithRSA 서명이 필요한 경우 crypto.SHA256을 crypto로 교체합니다.SHA1
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Golang과 DB를 연결하여 주가 데이터를 그래프로 표시합니다.진화 제작된 프로그램. 지난번에 한 품종에 집중되어 데이터를 보였는데, 이번에는 텍스트 상자에 입력한 품종 코드를 바탕으로 나는 도표를 표시하는 기능을 만들고 싶다. html에서 텍스트 상자와 단추를 준비하세요. w...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.