2

我正在尝试加密一些简单的东西,比如 int 或 long。我发现的最简单的方法如下:

int num = 2;
RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();
byte[] numBytes = BitConverter.GetBytes(num);
byte[] encryptedBytes = rsa.Encrypt(numBytes, true);

问题是, encryptedBytes 是 128 字节长。在加密结果与输入的字节长度相同的情况下,如何加密数据(我以后仍可以解密)?

我知道如果我定义 RSACryptoServiceProvider(512) 或 RSACryptoServiceProvider(384),我可以缩短结果,但这已经很低了。

我需要输入 4 或 8 个字节,输出 4 或 8 个字节(分别)

谢谢!

*** 说明:

我想加密一些小东西(即 4 或 8 个字节)并获得类似大小的结果。在 C# 中最简单的方法是什么,同时仍然使用一些键(使用内置库)而不是一些 mod 和 shift 操作

4

2 回答 2

1

您可以使用 Blowfish,它的块大小为 64 位/8 字节。 http://www.hotpixel.net/software.html#blowfishnet

于 2009-06-10T13:07:14.287 回答
0

那是不可能的。RSA 是一种所谓的分组密码(具有可变的分组长度)。

最著名的流密码可能是 RC4,但 .NET 没有内置实现。像 jonelf 建议的那样,具有小块大小的算法可能是最简单的。如果字节数不重要,我会使用 AES(块大小 128 位)。

您最初研究非对称算法是否有原因?

于 2009-06-10T12:47:49.850 回答