독립적 인 파일을 많이 저장할 때 C #에서 rijndaelalg.createencryptor를 호출하는 방법

StackOverflow https://stackoverflow.com/questions/3273672

문제

내 상황에서는 서버에 저장 될 많은 파일이 있습니다. 이 파일들 각각은 내가 쓰는 C # 응용 프로그램에 의해 작성됩니다.

배경 : 이 응용 프로그램의 경우 암호화하는 데 필요한 시간이 중요합니다. 파일은 작고 여분의 CPU주기가 충분합니다 (클라이언트는 데이터를 암호화하거나 해독하는 유일한 컴퓨터)입니다.

각 파일은 무관 해지고 Sysadmin 또는 하드 디스크를 보유하는 사람 (나쁜 사람 이정)

에 의한 스누핑에서 보호 할 내용이 필요합니다.

나의 이해는 Rijndaelalg 가이 종류의 작동을위한 견고한 알고리즘입니다. 이것이 정보가 올바른 것으로 가정합니다. RIJNDAELALG.CREATEENCRYPTOR 기능을 올바르게 사용할 수 있습니까?

사용자가 암호를 입력하고 암호가 훌륭한 암호임을 가정하는 것입니다.

내 질문은

  1. 사용자 입력 된 문자열 (C # '문자열)을 바이트 []로 변환하는 방법은 무엇입니까? 나는 다른 모든 캐릭터에 0을 갖는 문제를 해결해야한다고 가정해야합니다. 이 변환을하는 가장 좋은 방법은 무엇입니까?

  2. IV에 대해 무엇을 사용합니까? MSDN이 'null'을 전달하는 것이 좋습니다. 이 값에 대해 무엇을 사용합니까? 내 상황을 염두에두고 독립적으로 해독 해야하는 독립적 인 파일이 있습니다.

    IV가 잘 알려진 경우, 이것은이 문제입니까? (고유 한 가치가 있으므로 파일 이름의 해시를 사용할 수 있음)

  3. 는 동일한 암호를 사용하여 많은 독립 파일을 암호화하기 위해 Rijndaelalg보다 더 나은 알고리즘이 있습니까?

도움이 되었습니까?

해결책

Q1.일반적으로 UTF8 클래스의 GetBytes () 메서드를 사용하여 문자열을 바이트 배열로 변환합니다.

Encoding.UTF8.GetBytes(myString)
.

q2.rijndaelmanaged 클래스의 인스턴스를 작성할 때마다 IV가 무작위로 생성됩니다 (iv 속성을 사용하여 액세스 가능).generateiv () 메소드를 호출하여 다시 무작위로 랜덤화할 수 있습니다.

데이터를 해독하기 위해이 IV가 필요하므로 파일 당 고유 한 IV가 아닌 어딘가에이 IV를 저장하는 것이 좋습니다.static IV를 사용하여 모든 파일을 암호화하는 경우 파일을 해독 할 때마다 RIJNDAELMANED 클래스의 새 인스턴스를 만들 때 IV를 설정하십시오.

Q3.RijndaelManaged / AES는 가장 안전한 알고리즘이며, 나는 아무것도 사용하지 않을 것입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top