public string EncryptString(string plainText, string keyName)
        {
            if (plainText == null || plainText.Length <= 0)
            {
                throw new ArgumentNullException("PlainText cannot be empty");
            }
            if (keyName == null || keyName.Length <= 0)
            {
                throw new ArgumentNullException("Key Name cannot be empty");
            }

            var keyString = _secretStore.GetKey(keyName, _defaultKeyIndex);

            switch (_defaultAlgorithm)
            {
            case EncryptionAlgorithm.AES128_CBC:
                var aes128 = new AES128_CBC();
                return(aes128.Encrypt(plainText, keyString, _defaultAlgorithm, _defaultKeyIndex));

            case EncryptionAlgorithm.AES128_CTR:
            case EncryptionAlgorithm.AES256_CTR:
                var aesCTR = new AES_CTR();
                return(aesCTR.Encrypt(plainText, keyString, _defaultAlgorithm, _defaultKeyIndex));

            default:
                throw new NotImplementedException(_defaultAlgorithm.ToString());
            }
        }