이미 비대칭 알고리즘이 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);
}
대칭 키 배포에 사용 하시겠습니까? 일반적으로 대용량 데이터는 대칭 암호화를 사용하는 것이 더 빠르기 때문에 대칭 키를 비대칭 적으로 암호화하여 배포합니다. –
https URL에서 실행하면 전문가가 수행하는 하이브리드 암호화가 수행됩니다. –
MSDN 설명서에서 AES와 함께 RSA를 사용하는 예가 있습니다. http://msdn.microsoft.com/en-us/library/system.security.cryptography.rsapkcs1keyexchangeformatter.aspx –