독립적 인 파일을 많이 저장할 때 C #에서 rijndaelalg.createencryptor를 호출하는 방법
-
17-09-2020 - |
문제
내 상황에서는 서버에 저장 될 많은 파일이 있습니다. 이 파일들 각각은 내가 쓰는 C # 응용 프로그램에 의해 작성됩니다.
배경 : 이 응용 프로그램의 경우 암호화하는 데 필요한 시간이 중요합니다. 파일은 작고 여분의 CPU주기가 충분합니다 (클라이언트는 데이터를 암호화하거나 해독하는 유일한 컴퓨터)입니다.
각 파일은 무관 해지고 Sysadmin 또는 하드 디스크를 보유하는 사람 (나쁜 사람 이정)
에 의한 스누핑에서 보호 할 내용이 필요합니다.나의 이해는 Rijndaelalg 가이 종류의 작동을위한 견고한 알고리즘입니다. 이것이 정보가 올바른 것으로 가정합니다. RIJNDAELALG.CREATEENCRYPTOR 기능을 올바르게 사용할 수 있습니까?
사용자가 암호를 입력하고 암호가 훌륭한 암호임을 가정하는 것입니다.
내 질문은
-
사용자 입력 된 문자열 (C # '문자열)을 바이트 []로 변환하는 방법은 무엇입니까? 나는 다른 모든 캐릭터에 0을 갖는 문제를 해결해야한다고 가정해야합니다. 이 변환을하는 가장 좋은 방법은 무엇입니까?
-
IV에 대해 무엇을 사용합니까? MSDN이 'null'을 전달하는 것이 좋습니다. 이 값에 대해 무엇을 사용합니까? 내 상황을 염두에두고 독립적으로 해독 해야하는 독립적 인 파일이 있습니다.
IV가 잘 알려진 경우, 이것은이 문제입니까? (고유 한 가치가 있으므로 파일 이름의 해시를 사용할 수 있음)
-
는 동일한 암호를 사용하여 많은 독립 파일을 암호화하기 위해 Rijndaelalg보다 더 나은 알고리즘이 있습니까?
해결책
Q1.일반적으로 UTF8 클래스의 GetBytes () 메서드를 사용하여 문자열을 바이트 배열로 변환합니다.
Encoding.UTF8.GetBytes(myString)
.
q2.rijndaelmanaged 클래스의 인스턴스를 작성할 때마다 IV가 무작위로 생성됩니다 (iv 속성을 사용하여 액세스 가능).generateiv () 메소드를 호출하여 다시 무작위로 랜덤화할 수 있습니다.
데이터를 해독하기 위해이 IV가 필요하므로 파일 당 고유 한 IV가 아닌 어딘가에이 IV를 저장하는 것이 좋습니다.static IV를 사용하여 모든 파일을 암호화하는 경우 파일을 해독 할 때마다 RIJNDAELMANED 클래스의 새 인스턴스를 만들 때 IV를 설정하십시오.
Q3.RijndaelManaged / AES는 가장 안전한 알고리즘이며, 나는 아무것도 사용하지 않을 것입니다.