Ejemplo n.º 1
0
        public CodecOutput <string> Encode(CodecInput <string> input)
        {
            var builder = new StringBuilder();

            using (MD5 hash = MD5.Create())
            {
                byte[] data = hash.ComputeHash(_encodingFormat.GetBytes(input.Content));
                for (int i = 0; i < data.Length; i++)
                {
                    builder.Append(data[i].ToString(HashToStringFormat, CultureInfo.InvariantCulture));
                }
            }
            return(new CodecOutput <string> {
                Content = builder.ToString()
            });
        }
Ejemplo n.º 2
0
        public CodecOutput <string> Decode(CodecInput <string> value)
        {
            var gzBuffer = Convert.FromBase64String(value.Content);

            using (MemoryStream ms = new MemoryStream())
            {
                var conversionLength = BitConverter.ToInt32(gzBuffer, 0);
                ms.Write(gzBuffer, 4, gzBuffer.Length - 4);
                var buffer = new byte[conversionLength];
                ms.Position = 0;
                using (var zip = new GZipStream(ms, CompressionMode.Decompress))
                    zip.Read(buffer, 0, buffer.Length);
                return(new CodecOutput <string> {
                    Content = _encodingFormat.GetString(buffer, 0, buffer.Length)
                });
            }
        }
Ejemplo n.º 3
0
        public CodecOutput <string> Encode(CodecInput <string> value)
        {
            byte[] buffer = _encodingFormat.GetBytes(value.Content);
            using (var ms = new MemoryStream())
            {
                using (var zip = new GZipStream(ms, CompressionMode.Compress, true))
                    zip.Write(buffer, 0, buffer.Length);

                ms.Position = 0;
                var compressed = new byte[ms.Length];
                ms.Read(compressed, 0, compressed.Length);

                var gzBuffer = new byte[compressed.Length + 4];
                Buffer.BlockCopy(compressed, 0, gzBuffer, 4, compressed.Length);
                Buffer.BlockCopy(BitConverter.GetBytes(buffer.Length), 0, gzBuffer, 0, 4);
                return(new CodecOutput <string> {
                    Content = Convert.ToBase64String(gzBuffer)
                });
            }
        }
Ejemplo n.º 4
0
 public CodecOutput <string> Decode(CodecInput <string> input)
 {
     throw new NotSupportedException("Cannot decode MD5");
 }