Exemple #1
0
        /// <summary>
        ///     计算文件 Hash 值
        /// </summary>
        /// <param name="path"></param>
        /// <param name="hashAlgorithm"></param>
        /// <returns></returns>
        public static async Task <string> ComputeFileHashAsync(string path, HashAlgorithm hashAlgorithm)
        {
            await using var fs = File.OpenRead(path);
            var retVal = await hashAlgorithm.ComputeHashAsync(fs);

            return(BitConverter.ToString(retVal).Replace("-", string.Empty));
        }
Exemple #2
0
        private async Task VerifyComputeHashStreamAsync(Stream input, string output)
        {
            byte[] expected = ByteUtils.HexToByteArray(output);
            byte[] actual;

            using (HashAlgorithm hash = Create())
            {
                Assert.True(hash.HashSize > 0);
                actual = await hash.ComputeHashAsync(input);
            }

            Assert.Equal(expected, actual);
        }
Exemple #3
0
        private async Task <bool> EnsureExistAndHash(string file, string requiredHash, HashAlgorithm sha)
        {
            if (!File.Exists(file))
            {
                return(false);
            }
            if (string.IsNullOrEmpty(requiredHash))
            {
                return(true);
            }
            await using var stream = File.OpenRead(file);
            var hash = await sha.ComputeHashAsync(stream);

            var hashString = BytesToString(hash);

            return(hashString.Equals(requiredHash, StringComparison.CurrentCultureIgnoreCase));
        }