RSA 解密错误 crypto/rsa: decryption error

1. 运行环境

Go: <1.18>

2. 问题描述?

使用RSA私钥解密时发生错误

// PrivateKeyDecrypt  Rsa私钥解密
func PrivateKeyDecrypt(cipherData []byte) (error, []byte) {

    //1、通过私钥文件获取私钥信息
    _, err := ioutil.ReadFile("./private.pem")

    if err != nil {
        fmt.Println("ReadFile err:", err)
        return err, nil
    }

    text, err := goencryption.PrvKeyDecrypt(privateKey, cipherData)

    if err != nil {
        fmt.Println("PrvKeyDecrypt err:", err)
        return err, nil
    }

    return nil, text

}

私钥如下:

-----BEGIN RSA PRIVATE KEY-----
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
-----END RSA PRIVATE KEY-----

密文如下:

wwbQyhDjBr0cCf7kkRXWhNK5yYPZk3vkG838AebcCvsEtLF68kb3yolOLJdMzSLTB6z0ONSe/MEUAzptFa7nyOlr0rbPU9fqzIER2LyHGln/udwUwVh4snnrnYXiIVb+/NKe4A+sLE+Xs7FB0TNk6PSD3WyeEUOHwtsf6CuypLq/ykPNc7R2nIb1vZJ/X3drg0FqakXpMeJkswgKVU34n+HhQ5x
gwiTHCWT2qsnGSWt3eWpIBlEeVgbpLLmRcoMIJgUOvTL7p8Kd6atgH5uFI6Eyl8KTkaFqnrADb8kDaLY7d+AJz0dUUPJxrHZ5agHe2I+ejFtJAo060hA93525+iLdG77oiRQPL0ICrqH1kb/N0/2F3J/+FYdlcVH/ugxydR296HFn7GojtN6D+UAynmOiFzTjBzXW2rl/H9rJSPCk/pZwTD4Yt5XG/EVI
MaOlRp/zt95gnOZJ/9IqPhhduuH6rxAYIMuhju8i1+8HK/A5d/9/STaHQfBVv4y6e3MkRwTSOWoSZ45L2guR8vzU0qurjhNa7eA5Dr1f5BACCBFo1xtOHyShH5+a32WU+zTb2fuoBfLleB/OynoPnWuiSeGPMKmyGHDkDWvWFWr7VA+z8inaEV/eYDpIJjzdtgnPYvx4c4D/JKBBnpjZhjvVvkaglG544Nib7Q/LMOTPoSw=

在网站测试解密可以成功
the-x.cn/zh-cn/cryptography/Rsa.as...

3. 您期望得到的结果?

希望能解密

4. 您实际得到的结果?

PrvKeyDecrypt err: crypto/rsa: decryption error

rsa
最佳答案

我测试你的代码是可以的,你应该是没有把密文解base64,可以改成这样:

// PrivateKeyDecrypt  Rsa私钥解密
func PrivateKeyDecrypt(cipherData string) (error, []byte) {

    b, err := base64.StdEncoding.DecodeString(cipherData)
    if err != nil {
        fmt.Println(err.Error())
        return
    }

    //1、通过私钥文件获取私钥信息
    _, err = ioutil.ReadFile("./private.pem")

    if err != nil {
        fmt.Println("ReadFile err:", err)
        return err, nil
    }

    text, err := goencryption.PrvKeyDecrypt(privateKey, b)

    if err != nil {
        fmt.Println("PrvKeyDecrypt err:", err)
        return err, nil
    }

    return nil, text

}
2年前 评论
讨论数量: 2

我测试你的代码是可以的,你应该是没有把密文解base64,可以改成这样:

// PrivateKeyDecrypt  Rsa私钥解密
func PrivateKeyDecrypt(cipherData string) (error, []byte) {

    b, err := base64.StdEncoding.DecodeString(cipherData)
    if err != nil {
        fmt.Println(err.Error())
        return
    }

    //1、通过私钥文件获取私钥信息
    _, err = ioutil.ReadFile("./private.pem")

    if err != nil {
        fmt.Println("ReadFile err:", err)
        return err, nil
    }

    text, err := goencryption.PrvKeyDecrypt(privateKey, b)

    if err != nil {
        fmt.Println("PrvKeyDecrypt err:", err)
        return err, nil
    }

    return nil, text

}
2年前 评论

感谢 已解决

2年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!