Rsa Ruby и Golang различный результат для генерации знака закрытого ключа - PullRequest
0 голосов
/ 22 апреля 2020

В Ruby Я попытался сгенерировать знак с функцией и получить действительный результат:

Ruby код

Base64.strict_encode64(OpenSSL::PKey::RSA.new(YOUR_PRIVATE_KEY).private_encrypt(Digest::SHA256.hexdigest("#{API_KEY}#{URL}")))

PlayGround https://repl.it/@yuzic / AliveInbornDeeplearning

Но в Golang я получаю другой результат, почему?

signString :=  API_KEY + URL
message := []byte(signString)

h := sha256.New()
h.Write([]byte(message))
hashed := h.Sum(nil)


block, _ := pem.Decode([]byte(rsaPrivate))
if block == nil {
    panic("failed to parse root certificate PEM")
}
privKey, err := x509.ParsePKCS1PrivateKey(block.Bytes) 
if err != nil {
    panic("failed to parse certificate: " + err.Error())
}

sign, err := rsa.SignPKCS1v15(rand.Reader, privKey, crypto.SHA256, hashed[:])
if err != nil {
    log.Println(err)
    return
}

log.Println( base64.StdEncoding.Strict().EncodeToString(sign))

Детская площадка: https://play.golang.org/p/jxHWfMsE_S4

Результат в Ruby :

DvUumnFCYqLCyKCq0JdPelYi5egjpyogk/TJhBRHPvXTyh4HxlTiLn6//ib5HkSK74ZeXlLq3rDKAx1squQ+v2akpniJhKC6MK3tGDvzRsGfsnmHYfvgHxcoWltjW/IEPxtGOR89dogW9a0BAgLQpnklGzR2BEYtlWRJQwVp/2i8MTsHbWrx+UmzQoI1R6jTUCbLDueEmJShGteNKK66hB9W4FuCWPOx+0EGDSK5nbavRts9uJVFF13EjHF3Y2IgOSspF7eJh/7vXAYqC5brAk1W9HLRh/bIwJkTtly9yED++h1lACRURr5O/FRbOrnpD7p5lG0iLYnGSo+0dPOHgcNb5uO/q+yFcgOPIkE/+4IdZYa5IqGOLnZp1OnPCOZZ2p3S+8d+NpKjsUwRvCI4zsIL/sctvP5x1DL6WQGWTcfghmLxOCFnq9WWFEPnmxYsaMLGj6EHJBBB7YQzQfvCac2UiUOatjuenISH0CXoHl+Hy0xvNPF0fVaGXrTVuB6CMa0/JgOTLANJW7fKN69Noy1S0oIulQ7r4Knl3ssoMDK1fuL7RRcoLKzDF10GTO/Uz8jC1VNZ+WOmfrdbYsQpIADWDfs8B293634PRJSC524AkDZcPEl+H9Dt00Et6aKBB9nZpz90TR2p54dFjstDj8wv98cVGr4GGLKHLekNT3U=

Результат в Golang:

NX5DJEWN3XVW6O+qr+yJfEBVldMTC79HQodhiv7d3v1s0Js/YR0xx95n/JEuccOCvpYzexc6uUJqk4vrP1BMiH52dmWb+5fxMh7i8/NQ8wQ3cNZEo5G/MMOSdT7iIkBp29nnT66zzZm60ABkIl3/OcOoeX2PFvR2AYW/qNF6c96wfcAltTDDucuGHNfCnXennslLHkFGCo48Z8hCKJLU1Sdl3S6v5EDLoh5UDMrc8HyQ0zF338uhr5JUJAw0GTiwuzeZ1Q/kWSb9FGstVYDzsblSesO3KxW2NYsefPdPScRBd2gPfR6p1ymLpOAtjq6uLRpLacvNZx9Hz8lJDkgKTW7e8LIVFh6OiV7M0NcMRepHdn0YEqhrRuT4VBV9SpN+FcEF9NellGYcFMggL18CwrhGJWJhJchYH0RX4OUg8g/jrCbktJRpwoZ87LqT3r3wiqCGP7CPk8nymC4SUXi7ShTaoz7pjI5iBGeYUPAxuCR2yUDQlrFrpDCrL5Q6ae5jlgNyKXl8AYrcglDKqq+ATNnGvDXu1mEbtwzx8+NLn8hcpGzRzDCvW7CAw/89+AspAZJbIYIpRoHUNmJCdWCyLDrruXMdhlFiZLrFCEtExbPTusZN0dyFj0N9RLEK5vj3Oq68YrZYF0ep2lt3pJcfhRq7aY19teJA9k9trCNn3dQ=
...