现在我需要对一个字符串(最大长度255字节)进行加密,因为密文要保存进数据库里,所以要确定密文的最大长度。
请问有什么加密算法是可以满足这种要求的?我对加密不太在行,各位帮忙了!

解决方案 »

  1.   

    以最常用的对称加密算法DES和TripleDES算法为例...它们都是以8字节为一个块加密,一个8字节明文加密后的密文也是8字节...明文长度不足8字节添加0凑满8字节...所以加密后的密文长度一定是8字节的整数倍...最大长度255字节的明文加密后的密文最大长度是256字节...其他加密算法请参考相关文档...
      

  2.   

    下面是网上找的一段DES加密的代码,我随机生成了一些长度为1~255的字符串,使用这个加密出来的密文长度好像不是跟楼上说的不太一致。
    我循环了一万次,下面是输入和输出字符串长度对比(截取了部分)
    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);
            }
      

  3.   

    不好意思,刚才边吃边打的,表达错了。应该是密文长度跟 vrhero 说的不太一样。
    PS:自己发的居然不能修改?
      

  4.   

    建议你使用Enterprise Library 的加密程序块,很简单就能实现你说的加密!
      

  5.   

    补上楼:可参加此处
    http://www.cnblogs.com/Terrylee/archive/2005/11/29/286688.html