¿Cuál es la diferencia entre usar Rfc2898DeriveBytes y simplemente usar Encoding.ASCII.GetBytes(string object);
?¿Por qué necesito usar la clase Rfc2898DeriveBytes (en .NET) en lugar de usar directamente la contraseña como clave o IV?
He tenido un éxito relativo con cualquier enfoque, el primero es un enfoque más largo sin complicaciones, ya que este último es simple y al grano. Ambos parecen permitirte hacer lo mismo al final, pero estoy luchando para ver el punto en el uso del primero sobre el último.
El concepto básico que he podido comprender es que puedes convertir contraseñas de cadenas en matrices de bytes para usar, por ejemplo, en una clase de cifrado simétrica, AesManaged
. A través de la clase de RFC, pero puedes usar valores de sal y contraseña cuando creas tu objeto rfc. Supongo que es más seguro, pero aún así es una conjetura inculta en el mejor de los casos! También te permite devolver matrices de bytes de un cierto tamaño, bueno, algo así.
Éstos son algunos ejemplos que le muestre dónde vengo:
byte[] myPassinBytes = Encoding.ASCII.GetBytes("some password");
o
string password = "[email protected]%5w0r]>";
byte[] saltArray = Encoding.ASCII.GetBytes("this is my salt");
Rfc2898DeriveBytes rfcKey = new Rfc2898DeriveBytes(password, saltArray);
El objeto 'rfcKey' ahora se puede utilizar para la creación de la .KEY o .IV propiedades en una clase de algoritmo de cifrado simétrico.
es decir.
RijndaelManaged rj = new RijndaelManaged();
rj.Key = rfcKey.Getbytes(rj.KeySize/8);
rj.IV = rfcKey.Getbytes(rj.Blocksize/8);
'rj' debería estar listo para funcionar!
La parte confusa ... así que en lugar de usar el objeto 'rfcKey' ¿no puedo usar mi matriz 'myPassInBytes' para ayudar a configurar mi objeto 'rj'?
He intentado hacer esto en VS2008 y la respuesta inmediata es NO. ¿Pero ustedes tienen una mejor respuesta educada en cuanto a por qué la clase de RFC se utiliza sobre la otra alternativa que he mencionado anteriormente?
¡Esta pregunta está relacionada con la revisión y la preparación para el examen! – IbrarMumtaz