Jest już odpowiedź na to pytanie, ale myślę, że możemy zapewnić prostsze rozwiązanie.
Jeśli chcesz po prostu chronić swoje dane, istnieje danych, który uwalnia od problemów związanych z szyfrowaniem; DataProtectionProvider
.
W Startup.cs
:
public void ConfigureServices(IServiceCollection services)
{
services.AddDataProtection(); //Add this
[..]
services.AddMvc();
}
Jeśli chcesz, to jest możliwe określenie algorytmów (używając Microsoft.AspNetCore.DataProtection
) używanych do szyfrowania i sprawdzania, jak to:
services.AddDataProtection()
.UseCryptographicAlgorithms(new AuthenticatedEncryptionSettings()
{
EncryptionAlgorithm = EncryptionAlgorithm.AES_256_GCM,
ValidationAlgorithm = ValidationAlgorithm.HMACSHA256
});
Następnie szyfrowania/deszyfrowania przy użyciu usługa jako taka:
public class CipherService : ICipherService
{
private readonly IDataProtectionProvider _dataProtectionProvider;
private const string Key = "my-very-long-key-of-no-exact-size";
public CipherService(IDataProtectionProvider dataProtectionProvider)
{
_dataProtectionProvider = dataProtectionProvider;
}
public string Encrypt(string input)
{
var protector = _dataProtectionProvider.CreateProtector(Key);
return protector.Protect(input);
}
public string Decrypt(string cipherText)
{
var protector = _dataProtectionProvider.CreateProtector(Key);
return protector.Unprotect(cipherText);
}
}
Zgodnie z komentarzem [tutaj] (http://stackoverflow.com/questions/38333722/how-to-use-rijndael-encryption-with-a-net-core-class -library-nie-net-framewo), planowane jest wdrożenie w wersji 1.1. Do tego czasu możesz użyć AES, jak pokazano [tutaj] (http://stackoverflow.com/questions/35912849/rijndael-in-class-library-package-not-avaiable-for-dotnet5-4) – keyboardP