前言:
我正在执行具有验证提交阶段的数据导入。这个想法是:第一阶段允许从各种来源获取数据,然后在数据库上运行各种插入/更新/验证操作。提交会回滚,但会生成“验证哈希/校验和”。提交阶段是相同的,但是,如果“验证哈希/校验和”相同,则将提交操作。(数据库将在适当的隔离级别下运行。)
限制:
- 输入读取和操作仅向前读取一次
- 不想预先创建一个流(例如不希望写入 MemoryStream),因为可能有很多数据。(它可以在我们的服务器/负载上运行,但假装内存有限。)
- 不想“创建我自己的”。(我知道可用的代码,如Damien 的 CRC-32,我可以使用/修改它,但更喜欢“标准”的东西。)
而我(认为我)在寻找什么:
一种基于输入 + 操作生成哈希(例如 SHA1 或 MD5?)或校验和(例如 CRC32,但希望更多)的方法。(输入/操作本身可以散列为更适合校验和生成的值,但能够“写入蒸汽”会很好。)
所以,问题是:
如何在 C# 中生成运行哈希(或校验和)?
此外,虽然可以针对 Running 操作修改 CRC32 实现,但运行 SHAx 或 MD5 哈希呢?
我是否缺少某种可以用作适配器的方便的 Stream 方法?
(欢迎批评,但也请在适用的情况下回答上述问题。另外,我不想处理线程。;-)