加密问题 现在我需要对一个字符串(最大长度255字节)进行加密,因为密文要保存进数据库里,所以要确定密文的最大长度。请问有什么加密算法是可以满足这种要求的?我对加密不太在行,各位帮忙了! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 以最常用的对称加密算法DES和TripleDES算法为例...它们都是以8字节为一个块加密,一个8字节明文加密后的密文也是8字节...明文长度不足8字节添加0凑满8字节...所以加密后的密文长度一定是8字节的整数倍...最大长度255字节的明文加密后的密文最大长度是256字节...其他加密算法请参考相关文档... 下面是网上找的一段DES加密的代码,我随机生成了一些长度为1~255的字符串,使用这个加密出来的密文长度好像不是跟楼上说的不太一致。我循环了一万次,下面是输入和输出字符串长度对比(截取了部分)Input: 1, Output: 12Input: 10, Output: 24Input: 10, Output: 32Input: 10, Output: 44Input: 100, Output: 224Input: 100, Output: 236Input: 100, Output: 248Input: 100, Output: 256Input: 100, Output: 268...是不是这段代码不太对?static byte[] bytes = ASCIIEncoding.ASCII.GetBytes("ZeroCool");public static string Encrypt(string originalString) { if (String.IsNullOrEmpty(originalString)) { throw new ArgumentNullException("The string which needs to be encrypted can not be null."); } DESCryptoServiceProvider cryptoProvider = new DESCryptoServiceProvider(); MemoryStream memoryStream = new MemoryStream(); CryptoStream cryptoStream = new CryptoStream(memoryStream, cryptoProvider.CreateEncryptor(bytes, bytes), CryptoStreamMode.Write); StreamWriter writer = new StreamWriter(cryptoStream); writer.Write(originalString); writer.Flush(); cryptoStream.FlushFinalBlock(); writer.Flush(); return Convert.ToBase64String(memoryStream.GetBuffer(), 0, (int)memoryStream.Length); } 不好意思,刚才边吃边打的,表达错了。应该是密文长度跟 vrhero 说的不太一样。PS:自己发的居然不能修改? 建议你使用Enterprise Library 的加密程序块,很简单就能实现你说的加密! 补上楼:可参加此处http://www.cnblogs.com/Terrylee/archive/2005/11/29/286688.html 关于RichTextbox与Textbox的区别 typeof()用法请教 listview中数据大小的判断 用form.show()显示form之后,不能用tab键切换控件 代码怎么写 xpathnavigator如何给xml文档添加encoding属性? .NET和COM InterOP时,如何用C#创建一个SAFEARRAYS? 数据库备份中的问题,满急的! winform动态加入按钮问题? winform 下 datagrid 的cell 如何多行显示,输入? C# web timer 怎么用啊? 大哥们帮帮看看tabControl问题
我循环了一万次,下面是输入和输出字符串长度对比(截取了部分)
Input: 1, Output: 12
Input: 10, Output: 24
Input: 10, Output: 32
Input: 10, Output: 44
Input: 100, Output: 224
Input: 100, Output: 236
Input: 100, Output: 248
Input: 100, Output: 256
Input: 100, Output: 268
...
是不是这段代码不太对?static byte[] bytes = ASCIIEncoding.ASCII.GetBytes("ZeroCool");
public static string Encrypt(string originalString)
{
if (String.IsNullOrEmpty(originalString))
{
throw new ArgumentNullException("The string which needs to be encrypted can not be null.");
} DESCryptoServiceProvider cryptoProvider = new DESCryptoServiceProvider();
MemoryStream memoryStream = new MemoryStream();
CryptoStream cryptoStream = new CryptoStream(memoryStream, cryptoProvider.CreateEncryptor(bytes, bytes), CryptoStreamMode.Write); StreamWriter writer = new StreamWriter(cryptoStream);
writer.Write(originalString);
writer.Flush();
cryptoStream.FlushFinalBlock();
writer.Flush(); return Convert.ToBase64String(memoryStream.GetBuffer(), 0, (int)memoryStream.Length);
}
PS:自己发的居然不能修改?
http://www.cnblogs.com/Terrylee/archive/2005/11/29/286688.html