为TripleDES密钥生成随机字节C#

hs2*_*s2d 8 c# tripledes

我需要为TripleDES加密生成字节数组.我不想使用,.generateKey()因为我需要知道密钥中的字节以将它们传递给另一个应用程序.

感谢回复,但我忘了提一件事:字节必须是奇校验.否则我无法从它们生成TripleDES密钥.我对奇数奇偶校验不是很熟悉,所以我想要创建一个字节检查,如果它有奇数奇偶校验; 然后,如果它确实把它放在数组中,否则不是.

Mor*_*gil 4

如果需要保证奇校验,就得自己计算了。这应该做:

var rng = new RNGCryptoServiceProvider();
var key = new byte[24];
rng.GetBytes(key);

for(var i = 0; i < key.Length; ++i)
{
    int keyByte = key[i] & 0xFE;
    var parity = 0;
    for (var b = keyByte; b != 0; b >>= 1) parity ^= b & 1;
    key[i] = (byte)(keyByte | (parity == 0 ? 1 : 0));
}

return key;
Run Code Online (Sandbox Code Playgroud)