小编Dot*_*ado的帖子

在 VB.NET 中执行应该溢出的 UInt32 添加的最佳方法

在尝试用 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

2
推荐指数
1
解决办法
126
查看次数

标签 统计

encryption ×1

vb.net ×1