• 当前位置:首页>>ASP教程>>ASP问题解答>>发一个加密的方法
  • 发一个加密的方法
  • //声明加密字符生成的随机数的位数
    public const int LENGTH = 32;
    //声明加密字符前后的分隔长度
    public const int LEN = 4;


    ///方法作用:根据参数对其加密
    ///参数:
    /// string strEncrypt;欲加密的字符
    ///返回结果:加密后的字符
    public static byte[] SourceEncrypt(string strEncrypt)
    {
    string source = Encrypt(strEncrypt);
    //first
    string first = Encrypt(source.Substring(0,LEN));
    //second
    string second = Encrypt(source.Substring(LEN-1,source.Length-LEN));
    //third
    string third = Encrypt(source.Substring(source.Length-LEN,LEN));
    //four
    byte[] Random = new byte[LENGTH];
    RNGCryptoServiceProvider rng = new RNGCryptoServiceProvider();
    rng.GetNonZeroBytes(Random);
    string four = Encrypt(System.Text.Encoding.ASCII.GetString(Random));
    string all = first+second+third+four;
    return System.Text.Encoding.ASCII.GetBytes(all);
    } // end SourceEncrypt


    ///方法作用:对参数进行加密
    ///参数:
    /// string strEncrypt:欲加密的字符
    /// 返回结果:加密后的字符
    public static string Encrypt(string strEncrypt)
    {
    SHA256Managed sha = new SHA256Managed();
    byte[] VALUE = sha.ComputeHash(System.Text.Encoding.ASCII.GetBytes(strEncrypt));
    return System.Text.Encoding.ASCII.GetString(VALUE);
    } // end Encrypt

    ///方法作用:对参数进行比较
    ///参数:
    /// string strSource:原字符
    /// string strObject:目标字符
    /// 返回结果:bool是否相等
    public static bool CompareEncrypt(byte[] strSource,string strobject)
    {
    bool result = true;
    byte[] strObject = SourceEncrypt(strobject);
    //strObject = SourceEncrypt(strObject);
    if((strSource==null) || (strObject==null) || (strSource.Length != strObject.Length))
    result = false;
    else
    {
    //strSource = strSource.Substring(0,strSource.Length-LENGTH);
    //strObject = strObject.Substring(0,strObject.Length-LENGTH);
    //byte[] Source = System.Text.Encoding.ASCII.GetBytes(strSource);
    //byte[] Obj = System.Text.Encoding.ASCII.GetBytes(strObject);
    byte[] Source = strSource;
    byte[] Obj = strObject;
    if(Source.Length != Obj.Length)
    result = false;
    else
    {
    for(int i = 0; i < Source.Length-LENGTH; i++)
    {
    if(Source[i] != Obj[i])
    {
    result = false;
    break;
    }
    }
    }
    }

    return result;
    } //end CompareyEncrypt

  • 上一篇:Web页面中遍历TextBox(或其它控件)的方法
    下一篇:某一目录下的所有 XML文件绑定到不同的DataGrid的方法