Pregunta

Necesito generar una matriz de bytes para el cifrado TripleDES.No quiero usar .generateKey() porque necesito saber los bytes en la clave para pasarlos a otra aplicación.

Gracias por las respuestas, pero olvidé mencionar una cosa: los bytes deben tener una paridad impar.De lo contrario, no puedo generar una clave TripleDES a partir de ellos.No estoy tan familiarizado con la paridad impar, así que supongo que tengo que crear una verificación de bytes si tiene paridad impar o no;entonces, si lo pone en la matriz, de lo contrario no.

¿Fue útil?

Solución

Si necesita garantizar la paridad impar, debe calcularla usted mismo.Esto debería hacer:

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;

Otros consejos

¿Qué tal:

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

tripleDes.Key = key;

Tenga en cuenta que RandomNumberGenerator es adecuado paratrabajo criptográfico (en términos de datos aleatorios razonablemente seguros y difíciles de predecir), mientras que System.Random no lo es.

Pero ... cuál es el problema con solo:

TripleDES provider = TripleDES.Create();

byte[] key = provider.Key;

Allí obtendrá su clave utilizada por el cifrador y descifrador creado con esta instancia.

Tenga en cuenta que las otras respuestas carecen de un TripleDES.IsWeakKey .

El método GetBytes devuelveSecuencia de valores criptográficamente fuerte:

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

¿Qué pasa con Random.NextBytes()

Más información aquí .

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top