示例#1
0
        /// <summary>
        /// Initializes with a hexadecimal DES key.
        /// </summary>
        /// <param name="text">Hexadecimal representation of the DES key.</param>
        private void Init(string text)
        {
            Guard.IsTrue(text.IsHex(), "Key is not hexadecimal.");
            Guard.IsOneOfSupplied <int>(text.Length, new List <int>()
            {
                16, 32, 48
            }, "Key must be 16, 32 or 48 hexadecimal characters");

            text = text.ToUpper();
            switch (text.Length)
            {
            case 16:
                _keyA    = text;
                _keyB    = _keyA;
                _keyC    = _keyA;
                _keyType = DesKeyType.SingleLength;
                break;

            case 32:
                _keyA    = text.Substring(0, 16);
                _keyB    = text.Substring(16, 16);
                _keyC    = _keyA;
                _keyType = DesKeyType.DoubleLength;
                break;

            default:
                _keyA    = text.Substring(0, 16);
                _keyB    = text.Substring(16, 16);
                _keyC    = text.Substring(32, 16);
                _keyType = DesKeyType.TripleLength;
                break;
            }
        }
示例#2
0
        /// <summary>
        /// Creates a new random DES key.
        /// </summary>
        /// <param name="type">The DES key type (single, double or triple length).</param>
        public DESKey(DesKeyType type)
        {
            switch (type)
            {
            case DesKeyType.SingleLength:
                Init(GetRandomHex());
                break;

            case DesKeyType.DoubleLength:
                Init(GetRandomHex() + GetRandomHex());
                break;

            default:
                Init(GetRandomHex() + GetRandomHex() + GetRandomHex());
                break;
            }
        }