示例#1
0
        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;
            }
        }
示例#2
0
        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));
        }
示例#3
0
 /// <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));
 }
示例#4
0
 public SymmetricCrypto(string key, byte[] iv, SymmetricFlag flag)
     : this(key, iv, flag, CryptographySettings.Encoding)
 {
 }
示例#5
0
 public SymmetricCrypto(string key, SymmetricFlag flag)
     : this(key, GetDefaultIV(flag), flag)
 {
 }