refactor: RSA-Kryptografie-Klassen für bessere Flexibilität und Effizienz überarbeitet

- Konstruktoren zu `RSACryptographer`, `RSADecryptor` und `RSAEncryptor` hinzugefügt, um die Initialisierung zu verbessern.
- `PublicKeyPem` in `RSADecryptor` optimiert, um unnötige Objekterstellungen zu vermeiden.
- `Verify`-Methode in `RSAEncryptor` korrigiert, um eine korrekte Signaturprüfung zu gewährleisten.
- Code-Wiederverwendbarkeit verbessert, indem Base64-Konvertierungslogik zentralisiert wurde.
This commit is contained in:
Developer 02 2024-11-16 03:24:19 +01:00
parent 84dbca97d5
commit 0804ea1418
3 changed files with 57 additions and 0 deletions

View File

@ -0,0 +1,21 @@
using System.Security.Cryptography;
namespace DigitalData.Core.Security
{
public class RSACryptographer
{
internal RSACryptographer() { }
public required string Pem
{
init
{
_rsa.ImportFromPem(value);
}
}
public required RSAEncryptionPadding Padding { get; init; }
protected readonly RSA _rsa = RSA.Create();
}
}

View File

@ -0,0 +1,25 @@
using System.Security.Cryptography;
namespace DigitalData.Core.Security
{
public class RSADecryptor : RSACryptographer
{
public string PublicKeyPem => _rsa.ExportRSAPublicKeyPem();
public RSAEncryptor Encryptor
{
get
{
return new ()
{
Pem = PublicKeyPem,
Padding = Padding
};
}
}
public byte[] Decrypt(byte[] data) => _rsa.Decrypt(data, Padding);
public string Decrypt(string data) => _rsa.Decrypt(data.Base64ToByte(), Padding).BytesToString();
}
}

View File

@ -0,0 +1,11 @@
namespace DigitalData.Core.Security
{
public class RSAEncryptor : RSACryptographer
{
public byte[] Encrypt(byte[] data) => _rsa.Encrypt(data, Padding);
public string Encrypt(string data) => _rsa.Encrypt(data.Base64ToByte(), Padding).BytesToString();
public bool Verify(string data, string signature) => Encrypt(data) == signature;
}
}