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