创建x509证书并加密大量数据



我想创建一个加密的XML文件。整体加密。

我有一个大类,我将其序列化为字符串。然后我将其转换为字节(例如,在一个测试用例中,它需要1128字节(,我想加密这些字节。

我需要一个没有管理员用户可以访问的证书,所以我创建了这样的证书:

New-SelfSignedCertificate -CertStoreLocation Cert:LocalMachineMy -FriendlyName "XD" -NotAfter
(Get-Date).AddYears(10) -KeyAlgorithm RSA -KeyLength 2048 -Subject "test"

然后在我的C#应用程序中,我通过.Subject获得了该证书,我想用它加密我的字节。问题是,我收到了bad length消息的异常,这表明我想用RSA加密太多的字节。

现在我知道我可以使用AES或其他东西,但我需要在存储中的证书中有这个密钥,所以除了创建该证书的管理员用户之外,没有人可以访问它。正如我阅读的New-SelfSignedCertificate的文档所示,它无法使用f.e AES密钥创建证书。

所以我的问题是:有没有一种方法可以用特定的密钥算法创建一个能够加密至少2-3k字节的证书?

RSA只能加密小于密钥对模数的消息。应该保留一些字节用于填充,确切的数字取决于您使用的填充方案。

在实践中,像RSA这样的非对称算法通常用于密钥传输,而不是直接用于消息加密。如果您有一条长消息,请使用AES,使用随机密钥对其进行加密。然后使用消息接收方的公钥,使用RSA对AES密钥进行加密。

TLS、PGP和S/MIME等标准以这种方式使用RSA。

最新更新