校验码
Checksum 校验和结构的计算、解析和验证。
Checksum 表示命名哈希校验值,由算法名称和字节数组组成。它支持计算、解析、验证、字符串转换、类型转换和 JSON 序列化。
核心成员
成员
说明
Name
哈希算法名称,例如 MD5、SHA256、SHA512。
Value
校验值字节数组。
IsEmpty
是否为空校验值。
Compute / ComputeAsync
从字节数据或流计算校验值。
Verify / VerifyAsync
验证数据是否匹配当前校验值。
Parse / TryParse
从 Name:Hex 文本解析校验值。
本页使用框架 ChecksumTest 的现有测试;共享字段 _data 由该测试类生成 1024 字节数据,断言用于明确预期结果。Discussions 当前没有直接使用 Checksum。
计算校验和
来源:framework/Zongsoft.Core/test/Common/ChecksumTest.cs(节选;上下文见源文件)。
public void Compute()
{
var checksum1 = Checksum.Compute("SHA256", _data);
Assert.False(checksum1.IsEmpty);
Assert.False(checksum1.Value.IsEmpty);
Assert.Equal("SHA256", checksum1.Name, true);
Assert.Equal(SHA256.HashSizeInBytes, checksum1.Value.Length);
Assert.NotEmpty(checksum1.ToString());
Assert.StartsWith("SHA256:", checksum1.ToString());
var checksum2 = new Checksum(SHA256.HashData(_data));
Assert.False(checksum2.IsEmpty);
Assert.False(checksum2.Value.IsEmpty);
Assert.Equal("SHA256", checksum2.Name, true);
Assert.Equal(SHA256.HashSizeInBytes, checksum2.Value.Length);
Assert.NotEmpty(checksum2.ToString());
Assert.StartsWith("SHA256:", checksum2.ToString());
Assert.Equal(checksum1.Name, checksum2.Name, true);
Assert.True(checksum1.Value.Span.SequenceEqual(checksum2.Value.Span));
Assert.Equal(checksum1, checksum2);
}Compute 会根据名称创建哈希算法,并计算对应的校验值。
验证数据
来源:framework/Zongsoft.Core/test/Common/ChecksumTest.cs(节选;上下文见源文件)。
流数据可以使用 Verify(Stream) 或 VerifyAsync(Stream)。
解析和转换
Checksum.ToString() 输出 Name:Hex 格式,Parse 可以还原该格式。
来源:framework/Zongsoft.Core/test/Common/ChecksumTest.cs(节选;上下文见源文件)。
Checksum 内置类型转换器和 JSON 转换器,因此可以与 Convert 和 Serializer.Json 协同使用。
相关资源
最后更新于