看到有一个页面ContentDetail.aspx?id=4df1b1a2-1d67-4498-8778-6d4f5140b21b
请问id=4df1b1a2-1d67-4498-8778-6d4f5140b21b是用了什么加密算法,和我们一般用的加密结果不一样呢?

解决方案 »

  1.   

    这是guid,也就是全球唯一的标识
      

  2.   


    上面的就只是一个GUID。
    C#中System.Guid.NewGuid()就可以生成一个。
    在Sqlserver数据库中 newid() 也可以生成一个。
    http://baike.baidu.com/view/185358.htm
      

  3.   

    guid
      

  4.   

    是的这是guid,也就是全球唯一的标识,几乎不会重复算可以用当主键之类唯一标识
      

  5.   

    #region MD5算法
            /// <summary>
            /// MD5加密(小写)
            /// </summary>
            /// <param name="source">待加密的字符串</param>
            /// <param name="encoding">加密所使用的编码</param>
            /// <param name="code32">指示启用的加密位数,true表示采用32位加密,false表示采用16位加密</param>
            /// <returns>加密后的字符串</returns>
            public static string MD5(string source, string encoding, bool code32)
            {
                try
                {
                    //获取md5加密算法的实例
                    MD5CryptoServiceProvider md5 = new MD5CryptoServiceProvider();
                    //计算md5结果
                    byte[] result = md5.ComputeHash(Encoding.GetEncoding(encoding).GetBytes(source));
                    if (code32)  //32位加密
                    {
                        //因为BitConverter.ToString()方法转换后用"-"连接字节,所以要替换掉
                        return BitConverter.ToString(result).Replace("-", "").ToLower();
                    }
                    else    //16位加密
                    {
                        //转换后的字符串是32位的,取9-24位
                        //BitConverter.ToString(result, 4, 8),意思是从result字节数组的第5个元素开始,共取8个,转换成string
                        //因为转换后的字符串是用16进制表示的,每一个byte转换成16进制后是两位,那么8个byte恰好是8*2=16位
                        return BitConverter.ToString(result, 4, 8).Replace("-", "").ToLower();
                    }
                }
                catch
                {
                    return string.Empty;
                }
            }        /// <summary>
            /// utf-8编码的32位MD5加密(小写)
            /// </summary>
            /// <param name="source">待加密的字符串</param>
            /// <returns>加密后的16位字符序列</returns>
            public static string MD5(string source)
            {
                return MD5(source, "utf-8", true);
            }        /// <summary>
            /// 指定源字符串编码格式的32位MD5加密(小写)
            /// </summary>
            /// <param name="source">待加密的字符串</param>
            /// <param name="encoding">待加密字符串的编码格式</param>
            /// <returns>加密后的32位字符序列</returns>
            public static string MD5(string source, string encoding)
            {
                return MD5(source, encoding, true);
            }        /// <summary>
            /// utf-8编码的MD5加密(小写),当code32=true时为32位,否则为16位
            /// </summary>
            /// <param name="source">待加密的字符串</param>
            /// <param name="code32">指示启用的加密位数,true表示采用32位加密,false表示采用16位加密</param>
            /// <returns>加密后的字符序列</returns>
            public static string MD5(string source, bool code32)
            {
                return MD5(source, "utf-8", false);
            }
            #endregion
    C#中System.Guid.NewGuid()就可以生成一个。
    在Sqlserver数据库中 newid() 也可以生成一个。