gpt4 book ai didi

c - 使用 RSA_PKCS1_OAEP_PADDING 进行 RSA 签名

转载 作者:行者123 更新时间:2023-12-02 01:06:14 25 4
gpt4 key购买 nike

以前我使用的是没有填充的 rsa 签名,但现在我被要求添加 PKCS1_OAEP 填充,最初我尝试简单地添加这个标志“RSA_PKCS1_OAEP_PADDING”,但它在像这样运行时给出错误代码

error:04066076:rsa routines:RSA_EAY_PRIVATE_ENCRYPT:unknown padding type

此外,我在谷歌上搜索了带有 PKCS1_OAEP 填充的 rsa 签名,但没有得到任何东西,除了据说要实现 RSA_PKCS1_OAEP 填充你必须使用这个

int RSA_padding_add_PKCS1_OAEP(unsigned char *to, int tlen,
unsigned char *f, int fl, unsigned char *p, int pl);

然后使用 RSA_NO_padding 执行 private_encrypt 但仍然感到困惑,因为他们没有清楚地解释如何明确地使用此 padding_add 函数。任何人都可以提供帮助。真的很感激。

提前致谢

最佳答案

根据 RFC 3447 OAEP 填充方案只能用于加密操作,因此不能用于签名。如果标准的 RSASSA-PKCS1-v1_5 方案对你来说不够好,我相信你应该使用 RSASSA-PSS,它被推荐用于新的应用程序,并且具有类似于 OAEP 方案的特性。参见 RFC 3447了解更多详情。

您可以使用命令行 OpenSSL 工具轻松检查我的答案是否正确:

  1. 生成私钥:

    openssl genrsa -out private.key 2048
  2. 生成一些输入数据:

    echo "Hello world" > input.data
  3. 尝试用OAEP方案生成签名:

    openssl rsautl -sign -oaep -inkey private.key -in input.data -out output.data
    RSA operation error
    139655304349344:error:04066076:rsa routines:RSA_EAY_PRIVATE_ENCRYPT:unknown padding type:rsa_eay.c:389:
  4. 尝试用OAEP方案加密数据:

    openssl rsautl -encrypt -oaep -inkey private.key -in input.data -out output.data

你也可以看看"rsautl" module source code如果您需要更多信息,但请记住 RFC 3347是你的 friend :)

关于c - 使用 RSA_PKCS1_OAEP_PADDING 进行 RSA 签名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22344149/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com