2010-06-14 7 views
0

내 RSACryptoServiceProvider rsa 객체를로드 한 후 내 AES 객체의 키를 만들고 싶습니다. 내가 AES 키를 저장할 필요가 없기 때문에 (i) 단지 그것을 저장해야 할 필요가없고 공개 키로 생성 할 수있다.RSA로 임의의 데이터를 어떻게 생성합니까?

나는 rsa.Encrypt (byte []는 4 개의 하드 코딩 된 바이트)를 사용한다고 생각했습니다. 내가 필요한 데이터를 생성합니다. 그것은 내가 다른 데이터를 얻을 때마다 동일한 데이터로도이 함수를 호출 할 때마다 나타납니다. 그래서 그 때마다 AES 키를 재현 할 수있는 방법이 없습니다.

언제든지 내가 다시 만들 수있는 방법으로 RSA로 데이터를 생성 할 수 있습니까?

답변

2

공개 키로 AES 키를 생성하지 마십시오. 난수 생성기로 AES 키를 생성하고 수신자의 공개 키로 암호화합니다. .NET에서는 AES 기능에 대해 AesCryptoServiceProvider, 키 전송 기능에 대해서는 RSACryptoServiceProvider을 사용할 수 있습니다. 밥에게 전송 될 데이터를 암호화하기 위해 일반 이벤트 시퀀스는 다음

  1. 가 AesCryptoServiceProvider.GenerateKey 방법을 이용하여 임의의 AES 키를 생성한다.
  2. AES로 데이터를 암호화하십시오.
  3. AES 인스턴스의 속성에서 AES 키를 검색하십시오.
  4. RSACryptoServiceProvider를 사용하여 Bob의 RSA 키를 사용하여이 AES 키를 암호화하십시오.
  5. 암호화 된 데이터와 함께 이것을 Bob으로 전송하십시오.

Bob이이 데이터를 수신하면 RSA 개인 키를 사용하여이 단계를 실행 취소합니다.

이 내용은 CMS 및 PGP와 같은 메시지 암호화 표준에서 수행되는 작업에 대한 간략한 설명입니다. 일반적으로 휠 재발견보다는 C# 구현 중 하나를 사용하는 것이 좋습니다.

편집

(가) CMS를 다루는 것처럼 보이는 System.Security.Cryptography.Pkcs Namespace 여러 .NET 클래스가 있습니다. 나는 그들을 사용하지 않았다.

+0

.NET 라이브러리에서 구현 된 내용을 들어 보지 못했습니다. –

+0

그냥 궁금해서 대답을 수락하지 않으시겠습니까? –

+0

나는 며칠이나 다른 것을 기다리면서 2 주를 기다린다. –

관련 문제