【发布时间】:2022-10-25 20:25:02
【问题描述】:
我使用标准代码来加密这个文件。证书未过期且密钥有效。我找不到它引发此异常的原因。
public byte[] EncryptDataOaepSha256(X509Certificate2 cert, byte[] data)
{
RSA rsa = cert.GetRSAPublicKey();
if (rsa != null)
{
return rsa.Encrypt(data, RSAEncryptionPadding.OaepSHA256);
}
return null;
}
【问题讨论】:
-
填充模式与证书不兼容。
-
@jdweng 我检查了我的证书,如果我将其更改为 SHA-1,它确实是另一个填充,我得到了同样的错误
-
Sha1 是 160 位,但您的链接显示 256。您希望 sha1 填充到 256 吗? Sha1 哈希的长度是 40 个十六进制字符给我们 20 个字节 = 160
-
@jdweng 我发现我的证书是 sha256 抱歉输入错误。我不明白你的意思?我认为我的数据大小是问题,但是如果我全部尝试,我仍然会收到此错误
-
你的项目目标是什么? Net 中不支持所有加密模式。微软最终决定在 Net 4.7.2 中使用操作系统进行 TLS 加密。您可能使用的是旧版本的网络,其中加密不起作用。
标签: c# encryption certificate rsa public-key-encryption