【发布时间】:2013-09-06 00:38:10
【问题描述】:
如果 .NET 框架仅提供来自 BitConverter 类的函数/方法,该类仅以正确请求的字节序显式返回字节数组,那就太好了。
我已经在其他代码中完成了一些类似的功能,但是有没有更短更直接的方法? (效率是关键,因为这个概念在各种加密和密码派生上下文中使用 TON,包括 PBKDF2、Skein、HMAC、BLAKE2、AES 等)
// convert an unsigned int into an array of bytes BIG ENDIEN
// per the spec section 5.2 step 3 for PBKDF2 RFC2898
static internal byte[] IntToBytes(uint i)
{
byte[] bytes = BitConverter.GetBytes(i);
if (!BitConverter.IsLittleEndian)
{
return bytes;
}
else
{
Array.Reverse(bytes);
return bytes;
}
}
我也看到其他人在这个问题上苦苦挣扎,我还没有看到一个好的答案:(How to deal with 'Endianness'
【问题讨论】:
-
在正确的 PBKDF2 实现中,您只需要在开始和结束时在字节和整数之间进行转换。这对于典型的迭代计数可以忽略不计。只有糟糕的 C# 实现会在每次迭代后进行这些转换。
标签: hash cryptography bytearray bitconverter