如何解决F#RSA解密不适用于单独的公钥和私钥
我在这里有以下代码:
let rsa = RSA.Create(2048)
let msg : byte[] = someBytes // 'someBytes' are just some bytes,not relevant for this example
let publicKey1 : byte[] = someBytes
let privateKey1 : byte[] = someBytes
let publicKey2 : byte[] = someBytes
let privateKey2 : byte[] = someBytes
rsa.ImportRSAPublicKey(ReadOnlySpan<byte>(publicKey1),ref 2048)
rsa.ImportRSAPrivateKey(ReadOnlySpan<byte>(privateKey2),ref 2048)
let encryptedMsg = rsa.Encrypt(msg,RSAEncryptionPadding.OaepSHA256)
rsa.ImportRSAPrivateKey(ReadOnlySpan<byte>(privateKey1),ref 2048)
let decryptedMsg = rsa.Decrypt(encryptedMsg,RSAEncryptionPadding.OaepSHA256)
运行它时,出现以下错误:
Unhandled exception. Internal.Cryptography.CryptoThrowHelper+WindowsCryptographicException: The parameter is incorrect.
at System.Security.Cryptography.RSAImplementation.RSACng.EncryptOrDecrypt(SafeNCryptKeyHandle key,ReadOnlySpan`1 input,AsymmetricPaddingMode paddingMode,Void* paddingInfo,Boolean encrypt)
at System.Security.Cryptography.RSAImplementation.RSACng.EncryptOrDecrypt(Byte[] data,RSAEncryptionPadding padding,Boolean encrypt)
at System.Security.Cryptography.RSAImplementation.RSACng.Decrypt(Byte[] data,RSAEncryptionPadding padding)
at Program(Byte[] msg,Byte[] key,Byte[] iv) in ...
at Program.main(String[] _arg1) in ...
当我删除rsa.ImportRSAPrivateKey(ReadOnlySpan<byte>(privateKey2),ref 2048)
行时,代码运行正常。
我的问题是,为什么在第一种情况下,加密还某种程度上取决于私钥,而当我解密时,会出现此错误?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。