private RSAParameters _publicKey; private RSAParameters _privateKey; public void AssignNewKey() { using (var rsa = new RSACryptoServiceProvider(2048)) { rsa.PersistKeyInCsp = false; _publicKey = rsa.ExportParameters(false); _privateKey = rsa.ExportParameters(true); } } public byte[] EncryptData(byte[] dataToEncrypt) { using (var rsa = new RSACryptoServiceProvider(2048)) { rsa.PersistKeyInCsp = false; rsa.ImportParameters(_publicKey); return rsa.Encrypt(dataToEncrypt, true); } } public byte[] DecryptData(byte[] dataToDecrypt) { using (var rsa = new RSACryptoServiceProvider(2048)) { rsa.PersistKeyInCsp = false; rsa.ImportParameters(_privateKey); return rsa.Decrypt(dataToDecrypt, true); } }
RSA using Xml String Key
public void AssignNewKey(string publicKeyPath, string privateKeyPath) { using (var rsa = new RSACryptoServiceProvider(2048)) { rsa.PersistKeyInCsp = false; if (File.Exists(privateKeyPath)) { File.Delete(privateKeyPath); } if (File.Exists(publicKeyPath)) { File.Delete(publicKeyPath); } var publicKeyfolder = Path.GetDirectoryName(publicKeyPath); var privateKeyfolder = Path.GetDirectoryName(privateKeyPath); if (!Directory.Exists(publicKeyfolder)) { Directory.CreateDirectory(publicKeyfolder); } if (!Directory.Exists(privateKeyfolder)) { Directory.CreateDirectory(privateKeyfolder); } File.WriteAllText(publicKeyPath, rsa.ToXmlString(false)); File.WriteAllText(privateKeyPath, rsa.ToXmlString(true)); } } public byte[] EncryptData(string publicKeyPath, byte[] dataToEncrypt) { using (var rsa = new RSACryptoServiceProvider(2048)) { rsa.PersistKeyInCsp = false; rsa.FromXmlString(File.ReadAllText(publicKeyPath)); return rsa.Encrypt(dataToEncrypt, false); } } public byte[] DecryptData(string privateKeyPath, byte[] dataToDecrypt) { using (var rsa = new RSACryptoServiceProvider(2048)) { rsa.PersistKeyInCsp = false; rsa.FromXmlString(File.ReadAllText(privateKeyPath)); return rsa.Decrypt(dataToDecrypt, false); } }
RSA using KeyContainerName
const string ContainerName = "MyContainer"; public void AssignNewKey() { CspParameters cspParams = new CspParameters(1); cspParams.KeyContainerName = ContainerName; cspParams.Flags = CspProviderFlags.UseMachineKeyStore; cspParams.ProviderName = "Microsoft Strong Cryptographic Provider"; var rsa = new RSACryptoServiceProvider(cspParams) { PersistKeyInCsp = true }; } public void DeleteKeyInCsp() { var cspParams = new CspParameters { KeyContainerName = ContainerName }; var rsa = new RSACryptoServiceProvider(cspParams) { PersistKeyInCsp = false }; rsa.Clear(); } public byte[] EncryptData(byte[] dataToEncrypt) { var cspParams = new CspParameters { KeyContainerName = ContainerName }; using (var rsa = new RSACryptoServiceProvider(2048, cspParams)) { return rsa.Encrypt(dataToEncrypt, false); } } public byte[] DecryptData(byte[] dataToDecrypt) { var cspParams = new CspParameters { KeyContainerName = ContainerName }; using (var rsa = new RSACryptoServiceProvider(2048, cspParams)) { return rsa.Decrypt(dataToDecrypt, false); } }
Không có nhận xét nào :
Đăng nhận xét