在VB.NET中模拟字节溢出

时间:2014-06-17 13:12:47

标签: vb.net byte overflow encode

我想在VB.NET中模拟字节溢出。 下面的代码实现了正确的结果,但我怀疑这不是最有效的方法。是否有更简单/更好的方法来实现这一目标?

 Dim src As Byte = 232
 Dim key As Byte = 231
 Dim encoded As Byte = 0
 Dim decoded As Byte = 0

 ' Encode
 encoded = CByte((CInt(src) + CInt(key)) Mod 256I)

 ' Decode
 Dim tmp As Int32 = CInt(encoded) - CInt(key)
 decoded = CByte(IIf(tmp < 0, 256I + tmp, tmp))

 ' encoded = 207
 ' decoded = src = correct

1 个答案:

答案 0 :(得分:2)

是的,你可以加快速度。但是,它需要更改项目构建选项。在解决方案中添加新项目。右键单击它,“属性”,“构建”选项卡,向下滚动,单击“高级编译选项”按钮。勾选&#34;删除整数溢出检查&#34;选项。

现在你可以这样写:

    Dim src As Byte = 232
    Dim key As Byte = 231
    Dim encoded As Byte = src + key
    Dim decoded As Byte = encoded - key

您在新项目中公开的公共方法中所做的事情。

要注意凯撒密码的可疑效用,它太容易破解了。 System.Cryptography命名空间有更好的替代方案,并不要求你修改具有棘手副作用的全局构建选项。