예제 #1
0
        static public string CalcHash(string data)
        {
            string normalized = Regex.Replace(data, "(?<!\r)\n", "\r\n");

            byte[] binData = Encoding.UTF8.GetBytes(normalized);
            byte[] result  = VirgilHash.Sha256().Hash(binData);
            return(Convert.ToBase64String(result));
        }
예제 #2
0
        public static ServerPath FromLocalPath(LocalPath localPath)
        {
            using (var virgilHash = VirgilHash.Sha256())
            {
                var value = localPath.AsRelativeToRoot();
                value = value.Replace('\\', '_');
                value = value.Replace('/', '_');
                value = value.ToLowerInvariant();

                virgilHash.Start();
                virgilHash.Update(Encoding.UTF8.GetBytes(value));
                var hash = virgilHash.Finish();

                var name = $"/{Base32Encoding.ToString(hash).Replace("=", string.Empty)}.virgil";

                return(new ServerPath {
                    Value = name.ToLowerInvariant()
                });
            }
        }