我正在尝试弄清楚如何制作 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);
我怎样才能实现这样的东西?我见过公共(public)/私有(private)加密,但我见过的所有示例似乎都使用 RSA 加密。我想使用 AES。这可能吗?
最佳答案
AES 是一种用于对称 key 加密的算法,因此谈论 AES 公钥和私钥没有意义。如果您的 AES key 是公开的,则根本没有安全性。
如果您愿意,您可以使用 AES 加密来加密 RSA 公钥,但这不是必需的,因为它不是您需要保密的东西。
您可以使用 AES 加密来加密 RSA 私钥。如果您想用密码保护您的 key ,这可能很有用,这样如果您的计算机被盗,他们就无法使用您的 key 。
您还可以使用非对称加密将对称 key 传输给另一方,然后使用对称加密与他们通信。 TLS使用这个原理。它可能很有用,因为对称算法可以更快地计算,但以纯文本形式向某人发送对称 key 是不安全的,因此您需要非对称加密来保证对称 key 的安全。
关于使用 AES 的 C# 私有(private)/公共(public)加密,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3672049/