使用AES的C#专用/公共加密

Ice*_*ind 2 .net c# security encryption rijndaelmanaged

我试图弄清楚如何制作AES加密的公钥/私钥.我希望能够像这样使用它:

byte[] BytesToEncrypt = { 0x01, 0x02, 0x03, 0x04, 0x05 };
byte[] PublicKey;
byte[] PrivateKey;
byte[] EncryptedBytes;
byte[] UnencryptedBytes;

PrivateKey = CreatePrivateKey();
PublicKey = CreatePublicKey(PrivateKey);
EncryptedBytes = EncryptBytes(PrivateKey);
// This line should return unencrypted bytes
UnencryptedBytes = UnencryptBytes(EncryptedBytes, PrivateKey);
// This line should also return the unencrypted bytes
UnencryptedBytes = UnencryptBytes(EncryptedBytes, PublicKey);
Run Code Online (Sandbox Code Playgroud)

我该如何实现这样的东西?我见过公共/私有加密,但我见过的所有例子似乎都使用RSA加密.我想使用AES.这可能吗?

Mar*_*ers 7

AES是用于对称密钥加密的算法,因此讨论公钥和私钥AES密钥没有意义.如果您的AES密钥是公开的,则根本没有安全性.

如果您愿意,可以使用AES加密来加密RSA公钥,但这是不必要的,因为它不是您需要保密的东西.

您可以使用AES加密来加密RSA私钥.如果您想密码保护您的密钥,这可能很有用,这样如果您的计算机被盗,他们就无法使用您的密钥.

您还可以使用非对称加密将对称密钥传输到另一方,然后使用对称加密与它们进行通信. TLS使用这个原则.它可能很有用,因为对称算法可以更快地计算,但是以纯文本形式向某人发送对称密钥将是不安全的,因此您需要非对称加密来保持对称密钥的安全.