public SymmetricCrypto(string key, byte[] iv, SymmetricFlag flag, Encoding encoding) { if (string.IsNullOrEmpty(key)) { throw new ArgumentNullException("key"); } if (iv == null) { throw new ArgumentNullException("iv"); } Key = key; IV = iv; Encoding = encoding; switch (flag) { case SymmetricFlag.Rijndael: AlgorithmName = "Rijndael"; break; case SymmetricFlag.TripleDES: AlgorithmName = "TripleDES"; break; case SymmetricFlag.RC2: AlgorithmName = "RC2"; break; case SymmetricFlag.DES: AlgorithmName = "DES"; break; } }
private static byte[] GetDefaultIV(SymmetricFlag flag) { switch (flag) { case SymmetricFlag.Rijndael: return(new byte[] { 0x12, 0x34, 0x56, 0x78, 0x90, 0xab, 0xcd, 0xef, 0xef, 0xcd, 0xab, 0x90, 0x78, 0x56, 0x34, 0x12 }); case SymmetricFlag.TripleDES: return(new byte[] { 0x12, 0x34, 0x56, 0x78, 0x90, 0xab, 0xcd, 0xef }); case SymmetricFlag.RC2: return(new byte[] { 0x12, 0x34, 0x56, 0x78, 0x90, 0xab, 0xcd, 0xef }); case SymmetricFlag.DES: return(new byte[] { 0x12, 0x34, 0x56, 0x78, 0x90, 0xab, 0xcd, 0xef }); } throw new NotSupportedException(string.Format("不支持{0}自动匹配向量。", flag)); }
/// <summary> /// 对称加密 /// </summary> /// <param name="key"></param> /// <param name="iv"></param> /// <param name="flag"></param> /// <returns></returns> public static ISymmetricCrypto SymmetricCrypto(string key, byte[] iv, SymmetricFlag flag) { return(new SymmetricCrypto(key, iv, flag)); }
public SymmetricCrypto(string key, byte[] iv, SymmetricFlag flag) : this(key, iv, flag, CryptographySettings.Encoding) { }
public SymmetricCrypto(string key, SymmetricFlag flag) : this(key, GetDefaultIV(flag), flag) { }