我想创建一个加密的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。