1

이미 비대칭 알고리즘이 MVC C# 응용 프로그램에 구현되어 있지만 대칭 및 비대칭 암호화 (일명 하이브리드 암호화)를 모두 사용할 수 있도록 암호화 방법을 수정하고 싶습니다. 내가 어떻게 이럴 수 있니?하이브리드 암호화 구현?

비대칭 암호화 :

public string AsymmEncrypt(int accId, string input, string publickey) 
    { 
     Account a = new UserRepository().GetAccountById(accId); 
     RSACryptoServiceProvider myAlg = new RSACryptoServiceProvider(); 
     CspParameters cspParams = new CspParameters(); 
     publickey = new UserRepository().PublicKeyByAccountId(accId); 
     cspParams.KeyContainerName = publickey; 
     myAlg = new RSACryptoServiceProvider(cspParams); 

     byte[] cipher = myAlg.Encrypt(UTF8Encoding.UTF8.GetBytes(input), true); 
     return Convert.ToBase64String(cipher); 
    } 

비대칭 해독 : 당신은 아마 여기에 바퀴를 재발견하려고해서는 안

 public string AsymmDecrypt(int accId, string input, string privatekey) 
    { 
     Account a = new UserRepository().GetAccountById(accId); 
     RSACryptoServiceProvider myAlg = new RSACryptoServiceProvider(); 
     CspParameters cspParams = new CspParameters(); 
     privatekey = new UserRepository().PrivateKeyByAccountId(accId); 

     byte[] cipher = myAlg.Decrypt(Convert.FromBase64String(input), true); 
     return UTF8Encoding.UTF8.GetString(cipher); 
    } 
+0

대칭 키 배포에 사용 하시겠습니까? 일반적으로 대용량 데이터는 대칭 암호화를 사용하는 것이 더 빠르기 때문에 대칭 키를 비대칭 적으로 암호화하여 배포합니다. –

+0

https URL에서 실행하면 전문가가 수행하는 하이브리드 암호화가 수행됩니다. –

+0

MSDN 설명서에서 AES와 함께 RSA를 사용하는 예가 있습니다. http://msdn.microsoft.com/en-us/library/system.security.cryptography.rsapkcs1keyexchangeformatter.aspx –

답변

0

. .net alrady의 System.Security.Cryptography 네임 스페이스는 상당히 잘 검사 된 많은 암호화 기능을 제공합니다. 이를 달성하기 위해 비대칭 함수를 사용하지 마십시오. 당신은 공개 키 암호화를 통해 개인 키 분배를 수행 할 경우

, 당신은 아마 RSAPKCS1KeyExchangeFormatter 또는 RSAOAEPKeyExchangeFormatter 같은 것을 사용해야합니다 당신은 PKCS 번호의 1V2에게 내가 SSL 또는 OpenPGP를 얼마나 읽기 제안

0

을 지원할 수있는 유연성이있는 경우 구현.

나는 당신이 고심하고있는 부분을 잘 모릅니다. 간단히 말해, 비대칭 알고리즘은 대칭 키 교환에 사용됩니다.

대칭 알고리즘은 대량 데이터 (스트림/블록) 암호화에 사용됩니다. 단순히 2 가지 기능을 수정하는 것으로 끝내지는 않을 것입니다. 핸드 셰이크와 키 교환을 구현해야합니다.

MVC.NET 앱이 있으므로 웹 서버에서 호스팅하여 HTTPS/SSL 전송을 얻을 수 있습니다. WCF에서도 동일한 작업을 수행 할 수 있습니다. 기본 전송에서 제공하는 것을 사용하지 않는 이유는 무엇입니까? 클라이언트 인증서를 요구하도록 응용 프로그램 (web.config)을 구성 할 수도 있습니다.

추신 : 저는 휠을 다시 발명하지 않는다는 것에 동의합니다. 에릭이 링크 한 Microsoft의 기사조차도 그것에 대해 경고합니다.

주의 키 교환을 성공적으로 수행하려면 작업의 많은 세부 사항을 신중하게 수행해야하므로 제공된 기본 기능에서 직접 키 교환 방법을 만들지 않는 것이 좋습니다.

관련 문제