.NET使用RSA加密解密的方法

 更新时间:2021年9月22日 10:01  点击:1580

本文实例为大家分享了.NET使用RSA加密解密的具体代码,供大家参考,具体内容如下

PassWordHelper.cs代码:

using System;
using System.IO;
using System.Text;
using System.Globalization;
using System.Collections.Generic;
using System.Security.Cryptography;

namespace Utils
{
  /// <summary>
  /// 密码加密解密操作相关类
  /// </summary>
  public static class PassWordHelper
  {
    #region MD5 加密

    /// <summary>
    /// MD5加密
    /// </summary>
    public static string Md532(this string source)
    {
      if (string.IsNullOrEmpty(source)) return null;
      var encoding = Encoding.UTF8;
      MD5 md5 = MD5.Create();
      return HashAlgorithmBase(md5, source, encoding);
    }

    /// <summary>
    /// 加盐MD5加密
    /// </summary>
    public static string Md532Salt(this string source, string salt)
    {
      return string.IsNullOrEmpty(source) ? source.Md532() : (source + "『" + salt + "』").Md532();
    }

    #endregion

    #region SHA 加密

    /// <summary>
    /// SHA1 加密
    /// </summary>
    public static string Sha1(this string source)
    {
      if (string.IsNullOrEmpty(source)) return null;
      var encoding = Encoding.UTF8;
      SHA1 sha1 = new SHA1CryptoServiceProvider();
      return HashAlgorithmBase(sha1, source, encoding);
    }

    /// <summary>
    /// SHA256 加密
    /// </summary>
    public static string Sha256(this string source)
    {
      if (string.IsNullOrEmpty(source)) return null;
      var encoding = Encoding.UTF8;
      SHA256 sha256 = new SHA256Managed();
      return HashAlgorithmBase(sha256, source, encoding);
    }

    /// <summary>
    /// SHA512 加密
    /// </summary>
    public static string Sha512(this string source)
    {
      if (string.IsNullOrEmpty(source)) return null;
      var encoding = Encoding.UTF8;
      SHA512 sha512 = new SHA512Managed();
      return HashAlgorithmBase(sha512, source, encoding);
    }

    #endregion

    #region HMAC 加密

    /// <summary>
    /// HmacSha1 加密
    /// </summary>
    public static string HmacSha1(this string source, string keyVal)
    {
      if (string.IsNullOrEmpty(source)) return null;
      var encoding = Encoding.UTF8;
      byte[] keyStr = encoding.GetBytes(keyVal);
      HMACSHA1 hmacSha1 = new HMACSHA1(keyStr);
      return HashAlgorithmBase(hmacSha1, source, encoding);
    }

    /// <summary>
    /// HmacSha256 加密
    /// </summary>
    public static string HmacSha256(this string source, string keyVal)
    {
      if (string.IsNullOrEmpty(source)) return null;
      var encoding = Encoding.UTF8;
      byte[] keyStr = encoding.GetBytes(keyVal);
      HMACSHA256 hmacSha256 = new HMACSHA256(keyStr);
      return HashAlgorithmBase(hmacSha256, source, encoding);
    }

    /// <summary>
    /// HmacSha384 加密
    /// </summary>
    public static string HmacSha384(this string source, string keyVal)
    {
      if (string.IsNullOrEmpty(source)) return null;
      var encoding = Encoding.UTF8;
      byte[] keyStr = encoding.GetBytes(keyVal);
      HMACSHA384 hmacSha384 = new HMACSHA384(keyStr);
      return HashAlgorithmBase(hmacSha384, source, encoding);
    }

    /// <summary>
    /// HmacSha512 加密
    /// </summary>
    public static string HmacSha512(this string source, string keyVal)
    {
      if (string.IsNullOrEmpty(source)) return null;
      var encoding = Encoding.UTF8;
      byte[] keyStr = encoding.GetBytes(keyVal);
      HMACSHA512 hmacSha512 = new HMACSHA512(keyStr);
      return HashAlgorithmBase(hmacSha512, source, encoding);
    }

    /// <summary>
    /// HmacMd5 加密
    /// </summary>
    public static string HmacMd5(this string source, string keyVal)
    {
      if (string.IsNullOrEmpty(source)) return null;
      var encoding = Encoding.UTF8;
      byte[] keyStr = encoding.GetBytes(keyVal);
      HMACMD5 hmacMd5 = new HMACMD5(keyStr);
      return HashAlgorithmBase(hmacMd5, source, encoding);
    }

    /// <summary>
    /// HmacRipeMd160 加密
    /// </summary>
    public static string HmacRipeMd160(this string source, string keyVal)
    {
      if (string.IsNullOrEmpty(source)) return null;
      var encoding = Encoding.UTF8;
      byte[] keyStr = encoding.GetBytes(keyVal);
      HMACRIPEMD160 hmacRipeMd160 = new HMACRIPEMD160(keyStr);
      return HashAlgorithmBase(hmacRipeMd160, source, encoding);
    }

    #endregion

    #region AES 加密解密

    /// <summary> 
    /// AES加密 
    /// </summary> 
    /// <param name="source">待加密字段</param> 
    /// <param name="keyVal">密钥值</param> 
    /// <param name="ivVal">加密辅助向量</param> 
    /// <returns></returns> 
    public static string AesStr(this string source, string keyVal, string ivVal)
    {
      var encoding = Encoding.UTF8;
      byte[] btKey = keyVal.FormatByte(encoding);
      byte[] btIv = ivVal.FormatByte(encoding);
      byte[] byteArray = encoding.GetBytes(source);
      string encrypt;
      Rijndael aes = Rijndael.Create();
      using (MemoryStream mStream = new MemoryStream())
      {
        using (CryptoStream cStream = new CryptoStream(mStream, aes.CreateEncryptor(btKey, btIv), CryptoStreamMode.Write))
        {
          cStream.Write(byteArray, 0, byteArray.Length);
          cStream.FlushFinalBlock();
          encrypt = Convert.ToBase64String(mStream.ToArray());
        }
      }
      aes.Clear();
      return encrypt;
    }

    /// <summary> 
    /// AES解密 
    /// </summary> 
    /// <param name="source">待加密字段</param> 
    /// <param name="keyVal">密钥值</param> 
    /// <param name="ivVal">加密辅助向量</param> 
    /// <returns></returns> 
    public static string UnAesStr(this string source, string keyVal, string ivVal)
    {
      var encoding = Encoding.UTF8;
      byte[] btKey = keyVal.FormatByte(encoding);
      byte[] btIv = ivVal.FormatByte(encoding);
      byte[] byteArray = Convert.FromBase64String(source);
      string decrypt;
      Rijndael aes = Rijndael.Create();
      using (MemoryStream mStream = new MemoryStream())
      {
        using (CryptoStream cStream = new CryptoStream(mStream, aes.CreateDecryptor(btKey, btIv), CryptoStreamMode.Write))
        {
          cStream.Write(byteArray, 0, byteArray.Length);
          cStream.FlushFinalBlock();
          decrypt = encoding.GetString(mStream.ToArray());
        }
      }
      aes.Clear();
      return decrypt;
    }

    /// <summary> 
    /// AES Byte类型 加密 
    /// </summary> 
    /// <param name="data">待加密明文</param> 
    /// <param name="keyVal">密钥值</param> 
    /// <param name="ivVal">加密辅助向量</param> 
    /// <returns></returns> 
    public static byte[] AesByte(this byte[] data, string keyVal, string ivVal)
    {
      byte[] bKey = new byte[32];
      Array.Copy(Encoding.UTF8.GetBytes(keyVal.PadRight(bKey.Length)), bKey, bKey.Length);
      byte[] bVector = new byte[16];
      Array.Copy(Encoding.UTF8.GetBytes(ivVal.PadRight(bVector.Length)), bVector, bVector.Length);
      byte[] cryptograph;
      Rijndael aes = Rijndael.Create();
      try
      {
        using (MemoryStream mStream = new MemoryStream())
        {
          using (CryptoStream cStream = new CryptoStream(mStream, aes.CreateEncryptor(bKey, bVector), CryptoStreamMode.Write))
          {
            cStream.Write(data, 0, data.Length);
            cStream.FlushFinalBlock();
            cryptograph = mStream.ToArray();
          }
        }
      }
      catch
      {
        cryptograph = null;
      }
      return cryptograph;
    }

    /// <summary> 
    /// AES Byte类型 解密 
    /// </summary> 
    /// <param name="data">待解密明文</param> 
    /// <param name="keyVal">密钥值</param> 
    /// <param name="ivVal">加密辅助向量</param> 
    /// <returns></returns> 
    public static byte[] UnAesByte(this byte[] data, string keyVal, string ivVal)
    {
      byte[] bKey = new byte[32];
      Array.Copy(Encoding.UTF8.GetBytes(keyVal.PadRight(bKey.Length)), bKey, bKey.Length);
      byte[] bVector = new byte[16];
      Array.Copy(Encoding.UTF8.GetBytes(ivVal.PadRight(bVector.Length)), bVector, bVector.Length);
      byte[] original;
      Rijndael aes = Rijndael.Create();
      try
      {
        using (MemoryStream mStream = new MemoryStream(data))
        {
          using (CryptoStream cStream = new CryptoStream(mStream, aes.CreateDecryptor(bKey, bVector), CryptoStreamMode.Read))
          {
            using (MemoryStream originalMemory = new MemoryStream())
            {
              byte[] buffer = new byte[1024];
              int readBytes;
              while ((readBytes = cStream.Read(buffer, 0, buffer.Length)) > 0)
              {
                originalMemory.Write(buffer, 0, readBytes);
              }

              original = originalMemory.ToArray();
            }
          }
        }
      }
      catch
      {
        original = null;
      }
      return original;
    }

    #endregion

    #region RSA 加密解密

    //密钥对,请配合密钥生成工具使用『 http://download.csdn.net/detail/downiis6/9464639 』
    private const string PublicRsaKey = @"<RSAKeyValue>
 <Modulus>8Yvf/LjXRhCuOREk2CuSYvbD/RadwJ4sjHREIpQVKwkTlG3BtRgpnaMcoeLAesmwvpBWnqK4hBkYLxhRj+NEKnlGrJ+LkNMnZr0/4CMuulZFAnx7iQYaSq7Eh7kBKGLofc05CjZguYpnPNxHIv4VNx+a9tIh+hnhjrmkJLUm3l0=</Modulus>
 <Exponent>AQAB</Exponent>
</RSAKeyValue>";
    private const string PrivateRsaKey = @"<RSAKeyValue>
 <Modulus>8Yvf/LjXRhCuOREk2CuSYvbD/RadwJ4sjHREIpQVKwkTlG3BtRgpnaMcoeLAesmwvpBWnqK4hBkYLxhRj+NEKnlGrJ+LkNMnZr0/4CMuulZFAnx7iQYaSq7Eh7kBKGLofc05CjZguYpnPNxHIv4VNx+a9tIh+hnhjrmkJLUm3l0=</Modulus>
 <Exponent>AQAB</Exponent>
 <P>/xAaa/4dtDxcEAk5koSZBPjuxqvKJikpwLA1nCm3xxAUMDVxSwQyr+SHFaCnBN9kqaNkQCY6kDCfJXFWPOj0Bw==</P>
 <Q>8m8PFVA4sO0oEKMVQxt+ivDTHFuk/W154UL3IgC9Y6bzlvYewXZSzZHmxZXXM1lFtwoYG/k+focXBITsiJepew==</Q>
 <DP>ONVSvdt6rO2CKgSUMoSfQA9jzRr8STKE3i2lVG2rSIzZosBVxTxjOvQ18WjBroFEgdQpg23BQN3EqGgvqhTSQw==</DP>
 <DQ>gfp7SsEM9AbioTDemHEoQlPly+FyrxE/9D8UAt4ErGX5WamxSaYntOGRqcOxcm1djEpULMNP90R0Wc7uhjlR+w==</DQ>
 <InverseQ>C0eBsp2iMOxWwKo+EzkHOP0H+YOitUVgjekGXmSt9a3TvikQNaJ5ATlqKsZaMGsnB6UIHei+kUaCusVX0HgQ2A==</InverseQ>
 <D>tPYxEfo9Nb3LeO+SJe3G1yO+w37NIwCdqYB1h15f2YUMSThNVmpKy1HnYpUp1RQDuVETw/duu3C9gJL8kAsZBjBrVZ0zC/JZsgvSNprfUK3Asc4FgFsGfQGKW1nvvgdMbvqr4ClB0R8czkki+f9Oc5ea/RMqXxlI+XjzMYDEknU=</D>
</RSAKeyValue>";

    /// <summary>
    /// RSA 加密
    /// </summary>
    public static string Rsa(this string source)
    {
      RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();
      rsa.FromXmlString(PublicRsaKey);
      var cipherbytes = rsa.Encrypt(Encoding.UTF8.GetBytes(source), true);
      return Convert.ToBase64String(cipherbytes);
    }

    /// <summary>
    /// RSA解密
    /// </summary>
    public static string UnRsa(this string source)
    {
      RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();
      rsa.FromXmlString(PrivateRsaKey);
      var cipherbytes = rsa.Decrypt(Convert.FromBase64String(source), true);
      return Encoding.UTF8.GetString(cipherbytes);
    }

    #endregion

    #region DES 加密解密

    /// <summary>
    /// DES 加密
    /// </summary>
    public static string Des(this string source, string keyVal, string ivVal)
    {
      try
      {
        byte[] data = Encoding.UTF8.GetBytes(source);
        var des = new DESCryptoServiceProvider { Key = Encoding.ASCII.GetBytes(keyVal.Length > 8 ? keyVal.Substring(0, 8) : keyVal), IV = Encoding.ASCII.GetBytes(ivVal.Length > 8 ? ivVal.Substring(0, 8) : ivVal) };
        var desencrypt = des.CreateEncryptor();
        byte[] result = desencrypt.TransformFinalBlock(data, 0, data.Length);
        return BitConverter.ToString(result);
      }
      catch { return "转换出错!"; }
    }

    /// <summary>
    /// DES 解密
    /// </summary>
    public static string UnDes(this string source, string keyVal, string ivVal)
    {
      try
      {
        string[] sInput = source.Split("-".ToCharArray());
        byte[] data = new byte[sInput.Length];
        for (int i = 0; i < sInput.Length; i++)
        {
          data[i] = byte.Parse(sInput[i], NumberStyles.HexNumber);
        }
        var des = new DESCryptoServiceProvider { Key = Encoding.ASCII.GetBytes(keyVal.Length > 8 ? keyVal.Substring(0, 8) : keyVal), IV = Encoding.ASCII.GetBytes(ivVal.Length > 8 ? ivVal.Substring(0, 8) : ivVal) };
        var desencrypt = des.CreateDecryptor();
        byte[] result = desencrypt.TransformFinalBlock(data, 0, data.Length);
        return Encoding.UTF8.GetString(result);
      }
      catch { return "解密出错!"; }
    }

    #endregion

    #region TripleDES 加密解密

    /// <summary>
    /// DES3 加密
    /// </summary>
    public static string Des3(this string source, string keyVal)
    {
      try
      {
        TripleDESCryptoServiceProvider des = new TripleDESCryptoServiceProvider
        {
          Key = keyVal.FormatByte(Encoding.UTF8),
          Mode = CipherMode.ECB,
          Padding = PaddingMode.PKCS7
        };
        using (MemoryStream ms = new MemoryStream())
        {
          byte[] btArray = Encoding.UTF8.GetBytes(source);
          try
          {
            using (CryptoStream cs = new CryptoStream(ms, des.CreateEncryptor(), CryptoStreamMode.Write))
            {
              cs.Write(btArray, 0, btArray.Length);
              cs.FlushFinalBlock();
            }
            return ms.ToArray().Bytes2Str();
          }
          catch { return source; }
        }
      }
      catch
      {
        return "TripleDES加密出现错误";
      }
    }

    /// <summary>
    /// DES3 解密
    /// </summary>
    public static string UnDes3(this string source, string keyVal)
    {
      try
      {
        byte[] byArray = source.Str2Bytes();
        TripleDESCryptoServiceProvider des = new TripleDESCryptoServiceProvider
        {
          Key = keyVal.FormatByte(Encoding.UTF8),
          Mode = CipherMode.ECB,
          Padding = PaddingMode.PKCS7
        };
        using (MemoryStream ms = new MemoryStream())
        {
          using (CryptoStream cs = new CryptoStream(ms, des.CreateDecryptor(), CryptoStreamMode.Write))
          {
            cs.Write(byArray, 0, byArray.Length);
            cs.FlushFinalBlock();
            cs.Close();
            ms.Close();
            return Encoding.UTF8.GetString(ms.ToArray());
          }
        }
      }
      catch
      {
        return "TripleDES解密出现错误";
      }
    }

    #endregion

    #region BASE64 加密解密

    /// <summary>
    /// BASE64 加密
    /// </summary>
    /// <param name="source">待加密字段</param>
    /// <returns></returns>
    public static string Base64(this string source)
    {
      var btArray = Encoding.UTF8.GetBytes(source);
      return Convert.ToBase64String(btArray, 0, btArray.Length);
    }

    /// <summary>
    /// BASE64 解密
    /// </summary>
    /// <param name="source">待解密字段</param>
    /// <returns></returns>
    public static string UnBase64(this string source)
    {
      var btArray = Convert.FromBase64String(source);
      return Encoding.UTF8.GetString(btArray);
    }

    #endregion

    #region 内部方法

    /// <summary>
    /// 转成数组
    /// </summary>
    private static byte[] Str2Bytes(this string source)
    {
      source = source.Replace(" ", "");
      byte[] buffer = new byte[source.Length / 2];
      for (int i = 0; i < source.Length; i += 2) buffer[i / 2] = Convert.ToByte(source.Substring(i, 2), 16);
      return buffer;
    }

    /// <summary>
    /// 转换成字符串
    /// </summary>
    private static string Bytes2Str(this IEnumerable<byte> source, string formatStr = "{0:X2}")
    {
      StringBuilder pwd = new StringBuilder();
      foreach (byte btStr in source) { pwd.AppendFormat(formatStr, btStr); }
      return pwd.ToString();
    }

    private static byte[] FormatByte(this string strVal, Encoding encoding)
    {
      return encoding.GetBytes(strVal.Base64().Substring(0, 16).ToUpper());
    }

    /// <summary>
    /// HashAlgorithm 加密统一方法
    /// </summary>
    private static string HashAlgorithmBase(HashAlgorithm hashAlgorithmObj, string source, Encoding encoding)
    {
      byte[] btStr = encoding.GetBytes(source);
      byte[] hashStr = hashAlgorithmObj.ComputeHash(btStr);
      return hashStr.Bytes2Str();
    }

    #endregion
  }
}

Program.cs代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Test
{
  class Program
  {
    static void Main(string[] args)
    {

      string plainText = "这是一条被和谐的消息!";
      //加密明文,获得密文
      string EncryptText= Utils.PassWordHelper.Rsa(plainText);
      Console.WriteLine(EncryptText);

      //解密密文,获得明文
      string DecryptText = Utils.PassWordHelper.UnRsa(EncryptText);
      Console.WriteLine(DecryptText);
      Console.ReadKey();

    }
  }
}

运行结果如图:

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持猪先飞。

[!--infotagslink--]

相关文章

  • ASP.NET购物车实现过程详解

    这篇文章主要为大家详细介绍了ASP.NET购物车的实现过程,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2021-09-22
  • 图解PHP使用Zend Guard 6.0加密方法教程

    有时为了网站安全和版权问题,会对自己写的php源码进行加密,在php加密技术上最常用的是zend公司的zend guard 加密软件,现在我们来图文讲解一下。 下面就简单说说如何...2016-11-25
  • .NET Core下使用Kafka的方法步骤

    这篇文章主要介绍了.NET Core下使用Kafka的方法步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-09-22
  • 在ASP.NET 2.0中操作数据之七十二:调试存储过程

    在开发过程中,使用Visual Studio的断点调试功能可以很方便帮我们调试发现程序存在的错误,同样Visual Studio也支持对SQL Server里面的存储过程进行调试,下面就让我们看看具体的调试方法。...2021-09-22
  • Win10 IIS 安装.net 4.5的方法

    这篇文章主要介绍了Win10 IIS 安装及.net 4.5及Win10安装IIS并配置ASP.NET 4.0的方法,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下...2021-09-22
  • vue接口请求加密实例

    这篇文章主要介绍了vue接口请求加密实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-08-12
  • AES加密解密的例子小结

    关于AES加密的算法我们就不说了,这里主要给各位演示了三个关于AES算法实现的加密例子,希望本文章能给你带来帮助。 话不多说,先放上代码,一共有两个文件:AES.php(aes算...2016-11-25
  • 详解.NET Core 3.0 里新的JSON API

    这篇文章主要介绍了详解.NET Core 3.0 里新的JSON API,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-09-22
  • node.JS md5加密中文与php结果不一致怎么办

    这次文章要给大家介绍的是node.JS md5加密中文与php结果不一致怎么办,不知道具体解决办法的下面跟小编一起来看看。 因项目需要,需要Node.js与PHP做接口调用,发现nod...2017-07-06
  • .net数据库操作框架SqlSugar的简单入门

    这篇文章主要介绍了.net数据库操作框架SqlSugar的简单入门,帮助大家更好的理解和学习使用.net技术,感兴趣的朋友可以了解下...2021-09-22
  • ASP.NET Core根据环境变量支持多个 appsettings.json配置文件

    这篇文章主要介绍了ASP.NET Core根据环境变量支持多个 appsettings.json配置文件,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-09-22
  • php威盾解密的例子分享

    下面来给大家分享两个关于php威盾解密的例子,一个是批量解密一个是超级算法的解密都非常的好,大家有举的进入参考。 例子,批量解密 代码如下 复制代码 ...2016-11-25
  • 记一次EFCore类型转换错误及解决方案

    这篇文章主要介绍了记一次EFCore类型转换错误及解决方案,帮助大家更好的理解和学习使用asp.net core,感兴趣的朋友可以了解下...2021-09-22
  • PHP加密解密函数详解

    分享一个PHP加密解密的函数,此函数实现了对部分变量值的加密的功能。 加密代码如下: /* *功能:对字符串进行加密处理 *参数一:需要加密的内容 *参数二:密钥 */ function passport_encrypt($str,$key){ //加密函数 srand(...2015-10-30
  • NODE.JS加密模块CRYPTO常用方法介绍

    使用require('crypto')调用加密模块。加密模块需要底层系统提供OpenSSL的支持。它提供了一种安全凭证的封装方式,可以用于HTTPS安全网络以及普通HTTP连接。该模块还提供了一套针对OpenSSL的hash(哈希),hmac(密钥哈希),cipher...2014-06-07
  • C#连接加密的Sqlite数据库的方法

    对数据加密分两种,一种是对数据库本身进行加密,另一种是对数据表中的数据进行加密,下面通过本文给大家介绍C#连接加密的Sqlite数据库的方法,感兴趣的朋友一起看看吧...2020-06-25
  • C# 获取硬盘号,CPU信息,加密解密技术的步骤

    这篇文章主要介绍了C# 获取硬盘号,CPU信息,加密解密技术的步骤,帮助大家更好的理解和学习c#,感兴趣的朋友可以了解下...2021-01-16
  • C#实现对文件进行加密解密的方法

    这篇文章主要介绍了C#实现对文件进行加密解密的方法,涉及C#加密与解密的技巧,具有一定参考借鉴价值,需要的朋友可以参考下...2020-06-25
  • php使用异或实现的加解密的方法

    若a=b ^ c;则b=a ^ c (^是异或的意思),php在处理异或的字符时先把字符转化为二进制的ascii值,对这些值进行异或,获取结果后在将ascii值转化为字符...2013-09-26
  • 一组PHP加密解密函数分享

    复制代码 代码如下:<?php/***功能:对字符串进行加密处理*参数一:需要加密的内容*参数二:密钥*/function passport_encrypt($str,$key){ //加密函数srand((double)microtime() * 1000000);$encrypt_key=md5(rand(0, 32000...2014-06-07