8

TripleDES 暗号化用のバイト配列を生成する必要があります。.generateKey()別のアプリケーションに渡すためにキーのバイトを知る必要があるため、使用したくありません。

返信ありがとうございますが、1 つのことを忘れていました。バイトは奇数パリティでなければなりません。そうしないと、それらから TripleDES キーを生成できません。私は奇数パリティにあまり詳しくないので、奇数パリティがあるかどうかのバイトチェックを作成する必要があると思います。それを配列に入れる場合は、そうでない場合は入れません。

4

5 に答える 5

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;
于 2011-03-18T08:36:50.010 に答える
3

どうですか:

RandomNumberGenerator rng = RandomNumberGenerator.Create();
byte[] key = new byte[24]; // For a 192-bit key
rng.GetBytes(key);

tripleDes.Key = key;

RandomNumberGenerator暗号化作業 (合理的に安全で予測が困難なランダム データの観点から) には適していますが、そうではないことに注意してくださいSystem.Random

于 2011-03-18T07:51:48.997 に答える
2

しかし...ただの問題は何ですか:

TripleDES provider = TripleDES.Create();

byte[] key = provider.Key;

そこで、このインスタンスで作成された en- および復号化プログラムによって使用されるキーを取得します。

他の回答にはTripleDES.IsWeakKey.

于 2011-11-16T22:58:10.597 に答える
1

GetBytesメソッドは、暗号的に強力な一連の値を返します。

        var rng = System.Security.Cryptography.RandomNumberGenerator.Create();
        byte [] barr = new byte[128];
        rng.GetBytes(barr);
        foreach (var b in barr)
        {
            Console.WriteLine(b);
        }
于 2011-03-18T07:53:06.577 に答える
-1

どうですか Random.NextBytes()

詳細はこちら

于 2011-03-18T07:51:07.140 に答える