Question

Je dois générer tableau d'octets pour le chiffrement TripleDES. Je ne veux pas utiliser .generateKey() parce que je dois connaître les caractères de la clé pour les passer à une autre application.

Merci pour les réponses, mais j'ai oublié de mentionner une chose: les octets doivent être parité impaire. Sinon, je ne peux pas générer une clé TripleDES d'eux. Je ne suis pas familier avec la parité impaire, donc je suppose que devez créer un chèque d'octet si elle a une parité impaire ou non; alors si elle ne le mettre dans le tableau, sinon pas.

Était-ce utile?

La solution

Si vous avez besoin pour assurer la parité impaire, vous devez calculer vous-même. Cela devrait faire:

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;

Autres conseils

Que diriez-vous:

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

tripleDes.Key = key;

Notez que RandomNumberGenerator convient travail Crypto (en termes de sécuriser raisonnablement, difficiles à prévoir des données aléatoires), alors que System.Random n'est pas.

Mais ... quel est le problème avec juste:

TripleDES provider = TripleDES.Create();

byte[] key = provider.Key;

Il vous obtenez votre clé utilisée par l'en- et décrypteur créé à cette instance.

Notez que les autres réponses manquent TripleDES.IsWeakKey .

La méthode GetBytes rendements séquence de valeurs crypthographically forte:

        var rng = System.Security.Cryptography.RandomNumberGenerator.Create();
        byte [] barr = new byte[128];
        rng.GetBytes(barr);
        foreach (var b in barr)
        {
            Console.WriteLine(b);
        }

Qu'en est-Random.NextBytes()

Plus d'infos .

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top