Rfc2898DeriveBytes를 사용하는 것과 단지 Encoding.ASCII.GetBytes(string object);
을 사용하는 것의 차이점은 무엇입니까?암호를 키 또는 IV로 직접 사용하는 대신 .NET에서 Rfc2898DeriveBytes 클래스를 사용해야하는 이유는 무엇입니까?
나는 두 접근법 중 어느 것이 든 상대적으로 성공했다. 전자는 후자가 간단하고 요점은 더 긴 접근 방식이다. 두 가지 모두 당신이 결국 똑같은 일을 할 수있게 해주는 것처럼 보이지만 나는 후자보다 앞선 것을 사용함에있어 고심하고 있습니다.
내가 이해할 수있는 기본 개념은 문자열 암호를 바이트 배열로 변환하여 대칭 암호화 클래스 인 AesManaged
에 사용할 수 있다는 것입니다. RFC 클래스를 사용하지만 rfc 객체를 만들 때 소금 값과 암호를 사용합니다. 나는 그것의 더 안전하다고 생각하지만 여전히 무식한 추측이다. 또한 특정 크기의 바이트 배열을 반환 할 수 있습니다. 지금하여 .KEY 또는 설정으로 사용할 수 있습니다
byte[] myPassinBytes = Encoding.ASCII.GetBytes("some password");
또는
string password = "[email protected]%5w0r]>";
byte[] saltArray = Encoding.ASCII.GetBytes("this is my salt");
Rfc2898DeriveBytes rfcKey = new Rfc2898DeriveBytes(password, saltArray);
'rfcKey'개체 : 여기에
내가에서 오는하고 어디를 보여주는 몇 가지 예입니다 .IV 속성 은 대칭 암호화 알고리즘 클래스입니다.즉.
RijndaelManaged rj = new RijndaelManaged();
rj.Key = rfcKey.Getbytes(rj.KeySize/8);
rj.IV = rfcKey.Getbytes(rj.Blocksize/8);
'rj'가 준비되어야합니다!
혼란스러운 부분 ... 'rfcKey'개체를 사용하는 것보다 내'myPassInBytes'배열을 사용하여 'rj'개체를 설정할 수 없습니까?
VS2008에서이 작업을 시도했지만 즉각적인 대답은 아니오입니다. 그러나 위에서 언급 한 다른 대안보다 RFC 클래스가 사용되는 이유에 대해 교육받은 답을 얻었습니까?
이 질문은 시험 수정 및 준비와 관련이 있습니다! – IbrarMumtaz