/// <summary> /// 解密(输入16进制解密字符串) /// </summary> public string Decrypt(InOutParaType Encrypt_RPType, Encrypt_Type DecryptType, string DecryptString, string Key, string IV = "") { switch (Encrypt_RPType) { case EncryptionHelper.InOutParaType.Str16: return(Decrypt(DecryptType, DecryptString.Str16_To_Bytes(), Key, IV)); case EncryptionHelper.InOutParaType.Base64: return(Decrypt(DecryptType, Convert.FromBase64String(DecryptString), Key, IV)); default: return(string.Empty); } }
/// <summary> /// 加密(输出16进制加密字符串) /// </summary> public string Encrypt(InOutParaType Encrypt_RPType, Encrypt_Type EncryptType, string EncryptString, string Key = "", string IV = "") { switch (Encrypt_RPType) { case EncryptionHelper.InOutParaType.Str16: return(BitConverter.ToString(Encrypt(EncryptType, EncryptString, Key, IV)).Replace("-", string.Empty).ToUpper()); case EncryptionHelper.InOutParaType.Base64: return(Convert.ToBase64String(Encrypt(EncryptType, EncryptString, Key, IV))); default: return(string.Empty); } }
/// <summary> /// 解密 /// </summary> string Decrypt(Encrypt_Type DecryptType, byte[] DecryptBytes, string Key, string IV = "") { try { SymmetricAlgorithm ect = null; switch (DecryptType) { case Encrypt_Type.DES_Base64: ect = new DESCryptoServiceProvider(); if (string.IsNullOrEmpty(IV)) { IV = Key.Substring(0, 8); } break; case Encrypt_Type.DES3: ect = new TripleDESCryptoServiceProvider(); if (string.IsNullOrEmpty(IV)) { IV = Key.Substring(0, 8); } ect.BlockSize = BlockSize; break; case Encrypt_Type.AES: ect = new RijndaelManaged(); if (string.IsNullOrEmpty(IV)) { IV = Key.Substring(0, 16); } ect.BlockSize = BlockSize; break; case Encrypt_Type.DES_MD5: ect = new DESCryptoServiceProvider(); if (string.IsNullOrEmpty(IV)) { IV = Key; } ect.Key = Encode.GetBytes(Key); ect.IV = Encode.GetBytes(IV); ect.Mode = Mode; ect.Padding = Padding; MemoryStream ms = new MemoryStream(); CryptoStream cs = new CryptoStream(ms, ect.CreateDecryptor(), CryptoStreamMode.Write); cs.Write(DecryptBytes, 0, DecryptBytes.Length); cs.FlushFinalBlock(); return(Encode.GetString(ms.ToArray())); case Encrypt_Type.RC2: ect = new RC2CryptoServiceProvider(); if (string.IsNullOrEmpty(IV)) { IV = Key.Substring(0, 8); } ect.BlockSize = BlockSize; break; case Encrypt_Type.RC4: RC4CryptoServiceProvider rc4 = new RC4CryptoServiceProvider(); rc4.Encode = Encode; return(rc4.Decrypt(DecryptBytes, Key)); case Encrypt_Type.RSA: RSACryptoServiceProvider RSA = new RSACryptoServiceProvider(); RSA.FromXmlString(Key); byte[] decryptedData = RSA.Decrypt(DecryptBytes, false); return(Encode.GetString(decryptedData)); default: return(string.Empty); } ect.Key = Encode.GetBytes(Key); ect.IV = Encode.GetBytes(IV); ect.Mode = Mode; ect.Padding = Padding; ICryptoTransform Decrypt = ect.CreateDecryptor(); byte[] result = Decrypt.TransformFinalBlock(DecryptBytes, 0, DecryptBytes.Length); return(Encode.GetString(result)); } catch (Exception ex) { if (throwEx) { throw ex; } } return(null); }
/// <summary> /// 加密 /// </summary> byte[] Encrypt(Encrypt_Type EncryptType, string EncryptString, string Key = "", string IV = "") { try { SymmetricAlgorithm ect = null; switch (EncryptType) { case Encrypt_Type.DES_Base64: ect = new DESCryptoServiceProvider(); if (string.IsNullOrEmpty(IV)) { IV = Key.Substring(0, 8); } break; case Encrypt_Type.DES3: ect = new TripleDESCryptoServiceProvider(); if (string.IsNullOrEmpty(IV)) { IV = Key.Substring(0, 8); } ect.BlockSize = BlockSize; break; case Encrypt_Type.AES: ect = new AesCryptoServiceProvider(); if (string.IsNullOrEmpty(IV)) { IV = Key.Substring(0, 16); } ect.BlockSize = BlockSize; break; case Encrypt_Type.DES_MD5: if (!string.IsNullOrEmpty(Key)) { ect = new DESCryptoServiceProvider(); if (string.IsNullOrEmpty(IV)) { IV = Key; } byte[] inputByteArray = Encode.GetBytes(EncryptString); ect.Key = Encode.GetBytes(Key); ect.IV = Encode.GetBytes(IV); ect.Mode = Mode; ect.Padding = Padding; MemoryStream ms = new MemoryStream(); CryptoStream cs = new CryptoStream(ms, ect.CreateEncryptor(), CryptoStreamMode.Write); cs.Write(inputByteArray, 0, inputByteArray.Length); cs.FlushFinalBlock(); return(ms.ToArray()); } else { goto default; } case Encrypt_Type.RC2: ect = new RC2CryptoServiceProvider(); if (string.IsNullOrEmpty(IV)) { IV = Key.Substring(0, 8); } ect.BlockSize = BlockSize; break; case Encrypt_Type.RC4: if (!string.IsNullOrEmpty(Key)) { RC4CryptoServiceProvider rc4 = new RC4CryptoServiceProvider(); rc4.Encode = Encode; return(rc4.Encrypt(EncryptString, Key)); } else { goto default; } case Encrypt_Type.RSA: if (!string.IsNullOrEmpty(Key)) { RSACryptoServiceProvider RSA = new RSACryptoServiceProvider(dwKeySize); RSA.FromXmlString(Key); byte[] dataToEncrypt = Encode.GetBytes(EncryptString); byte[] encryptedData = RSA.Encrypt(dataToEncrypt, false); return(encryptedData); } else { goto default; } case Encrypt_Type.MD5: MD5CryptoServiceProvider md5Hasher = new MD5CryptoServiceProvider(); return(Hash(md5Hasher, EncryptString)); case Encrypt_Type.MD5_16: md5Hasher = new MD5CryptoServiceProvider(); byte[] bs = new byte[8]; Array.Copy(Hash(md5Hasher, EncryptString), 4, bs, 0, 8); return(bs); case Encrypt_Type.SHA1: SHA1 sha1Hasher = new SHA1CryptoServiceProvider(); return(Hash(sha1Hasher, EncryptString)); case Encrypt_Type.HMACSHA1: if (!string.IsNullOrEmpty(Key)) { HMACSHA1 hmacsha1 = new HMACSHA1(Encode.GetBytes(Key)); return(Hash(hmacsha1, EncryptString)); } else { goto default; } default: return(null); } ect.Key = Encode.GetBytes(Key); ect.IV = Encode.GetBytes(IV); ect.Mode = Mode; ect.Padding = Padding; ICryptoTransform Encrypt = ect.CreateEncryptor(); byte[] data = Encode.GetBytes(EncryptString); return(Encrypt.TransformFinalBlock(data, 0, data.Length)); } catch (Exception ex) { if (throwEx) { throw ex; } } return(null); }