Example #1
0
        public static string ToBase64String(this byte[] bytes, Base64Options options = Base64Options.Default)
        {
            if (bytes?.Length == 0)
            {
                return(string.Empty);
            }

            var s = Convert.ToBase64String(bytes);

            if (options.HasFlag(Base64Options.NoPadding) || options.HasFlag(Base64Options.UrlSafe))
            {
                var idx = s.IndexOf('=');
                if (idx > 0)
                {
                    s = s.Substring(0, idx);
                }
            }

            if (options.HasFlag(Base64Options.UrlSafe))
            {
                s = s.Replace('/', '_').Replace('+', '-');
            }

            return(s);
        }
Example #2
0
        public static byte[] AsBytesFromBase64(this string s, Base64Options options = Base64Options.Default)
        {
            if (string.IsNullOrEmpty(s))
            {
                return(Array.Empty <byte>());
            }

            if (options == Base64Options.Default)
            {
                return(Convert.FromBase64String(s));
            }

            if (options.HasFlag(Base64Options.NoPadding) || options.HasFlag(Base64Options.UrlSafe))
            {
                switch (s.Length % 4)
                {
                case 2:
                    s += "==";
                    break;

                case 3:
                    s += "=";
                    break;
                }
            }

            if (options.HasFlag(Base64Options.UrlSafe))
            {
                s = s.Replace('_', '/').Replace('-', '+');
            }

            return(Convert.FromBase64String(s));
        }