【问题标题】:.Net Simple RSA encryption.Net 简单 RSA 加密
【发布时间】:2009-06-10 12:44:12
【问题描述】:

我正在尝试加密一些简单的东西,比如 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 操作

【问题讨论】:

  • 为什么要加密一个小对象?如果我们对您想要整体完成有更好的了解,它可能会帮助您获得更好的答案

标签: .net encryption int rsacryptoserviceprovider


【解决方案1】:

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

【讨论】:

  • 我现在会调查一下。谢谢
【解决方案2】:

这是不可能的。 RSA 是所谓的block cipher(块长度可变)。

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

您最初研究非对称算法有什么原因吗?

【讨论】:

  • 那时我应该澄清我的问题。我想加密一些小东西(即 4 或 8 个字节)并获得类似大小的结果。在 C# 中最简单的方法是什么,同时仍然使用一些键(使用内置库)而不是一些 mod 和 shift 操作
  • 我必须承认我正在研究加密数字,但不太记得它的含义,只需使用 RSA(哎呀,它加密 :) 我将研究河豚示例...
猜你喜欢
  • 1970-01-01
  • 2014-06-02
  • 1970-01-01
  • 2011-01-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-19
相关资源
最近更新 更多