【发布时间】:2021-07-14 19:42:36
【问题描述】:
在VB.NET中尝试编写ChaCha20加密算法的ARX部分时,遇到了加法部分溢出异常的问题。
算法中有很多 UInt32 数字的加法,加法时数字应该会溢出,但在我的代码的其他部分,我想捕获这些异常。
处理此问题并完全避免溢出异常的一种方法是临时转换为 UInt64,然后以这种方式进行添加:
a = (a + b) mod 2^32
我不会得到任何溢出,但这不适用于 ARX 算法所需的循环位旋转,因为我现在将位推入 64 位 UInt 中的空 32 位。
这种来回转换使算法变慢,对于每个 512 位数据块,我们要进行 20 轮一组计算,因此这部分代码的性能非常重要。
在 VB.NET 中是否有更优雅的方式来处理这个问题?
关于算法的更多信息: https://en.wikipedia.org/wiki/Salsa20
感谢您分享您的见解!
【问题讨论】:
标签: vb.net encryption