我需要在我正在工作的一个项目中使用一些加密机制。我正在探索RSA加密并编写了一些示例程序来学习。
我知道RSA加密的块大小为16个字节。所以我将字符串“12345678”作为输入提供给下面的函数:
public static string Encrypt (string input) { var byteConverter = new UnicodeEncoding ();
RSACryptoServiceProvider cruptoEngine = new RSACryptoServiceProvider(); byte[] output = cruptoEngine.Encrypt (byteConverter.GetBytes (input), false); return BytesToString (output); //BytesToString()将字节转换为十六进制字符串 }
现在,我得到的加密字符串是128个字节(256个十六进制字符)。这个字符串对我来说太大了。我有点希望如果我提供16个字节的明文数据,我会得到16个字节的加密数据。我做错了什么吗?这是否是应该发生的?我能否缩短加密数据的长度?