//聲明加密字符生成的隨機數的位數 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
|