2009-06-10 7 views
2

int 또는 long과 같은 간단한 암호화를 시도하고 있습니다. 내가 찾은 가장 간단한 방법은 다음과 같습니다..Net 간단한 RSA 암호화

int num = 2; 
RSACryptoServiceProvider rsa = new RSACryptoServiceProvider(); 
byte[] numBytes = BitConverter.GetBytes(num); 
byte[] encryptedBytes = rsa.Encrypt(numBytes, true); 

문제는 encryptedBytes가 128 바이트입니다. 암호화 된 결과의 길이가 입력과 동일한 바이트 인 데이터 (나중에 해독 할 수있는 데이터)를 어떻게 암호화 할 수 있습니까?

RSACryptoServiceProvider (512) 또는 RSACryptoServiceProvider (384)를 정의하면 결과를 단축 할 수 있지만 그만큼 낮습니다.

나는 4 또는 8 바이트가는, 4 또는 8 바이트 (각각)

감사 나오는 필요!

*** 명확한 설명 :

내가 뭔가 작은 (즉, 4 또는 8 바이트)를 암호화하고 비슷한 크기의 결과를 가져올

. C#에서 몇 가지 모드와 시프트 연산보다는 일부 키 (내장 라이브러리 사용)를 사용하면서 가장 간단한 방법은 무엇입니까

+0

왜 작은 개체를 암호화 하시겠습니까? 전반적으로 달성하고자하는 더 좋은 아이디어가 있다면 더 나은 답변을 얻을 수 있습니다. –

답변

0

그건 불가능합니다. RSA는 소위 block cipher (가변 블록 길이 포함)입니다.

가장 잘 알려진 스트림 암호는 아마도 RC4이지만 .NET에는 기본 제공 구현이 제공되지 않습니다. jonelf가 제안한 것과 같이 블록 크기가 작은 알고리즘은 아마도 가장 쉽습니다. 바이트 수가 중요하지 않으면 AES (블록 크기 128 비트)를 사용합니다.

원래 비대칭 알고리즘을 본 이유가 있습니까?

+0

그럼 내 질문을 명확히해야했습니다. 작은 (즉 4 또는 8 바이트) 암호화하고 비슷한 크기의 결과를 얻고 싶습니다. C#에서 몇 가지 모드와 시프트 연산보다는 일부 키 (라이브러리가 내장 된)를 사용하면서 가장 간단한 방법은 무엇입니까? – user97889

+0

숫자를 암호화하고 그 의미가 무엇인지를 기억하고 있음을 인정해야합니다. RSA (heck, it encrypts)를 사용하십시오. 나는 복어 예제를 살펴볼 것입니다 ... – user97889