Плохой выбор дизайна делает этот класс статичным.
И вы испытываете трудности, связанные с попыткой использовать его с внедрением зависимости. Static и DI плохо смешиваются, и их следует избегать, насколько это возможно.
Инкапсулирует желаемую функциональность за абстракцией.
public interface IEncrypter {
string Encrypt(string plainText);
string Decrypt(string plainText);
}
и реализовать его
public class Encrypter : IEncrypter {
private static readonly Encoding encoding = Encoding.UTF8;
private readonly EncryptionSettings _encryptionSettings;
public Encrypter(IOptions<EncryptionSettings> encryptionSettings) {
_encryptionSettings = encryptionSettings.Value;
}
public string Encrypt(string plainText) {
//(...)
}
public string Decrypt(string plainText) {
//(...)
}
static byte[] HmacSHA256(String data) {
//(...)
}
}
Теперь это позволит абстракции шифрования IEncrypter
вводиться по мере необходимости вместе с собственными зависимостями. то есть IOptions<TOption>
.
Если предполагается, что это единственная служба шифрования, зарегистрируйте ее как одиночную при запуске
services.AddSingleton<IEncrypter, Encrypter>();