public MainViewModel(ISettingsService settingsService, ILog log) { this.settingsService = settingsService ?? throw new ArgumentNullException(nameof(settingsService)); this.log = log ?? throw new ArgumentNullException(nameof(log)); string keySetting; if (settingsService.TryGetSetting(keySettingId, out keySetting) && !string.IsNullOrWhiteSpace(keySetting)) { key = keySetting; } else { AesParameters parameters = encryptor.GenerateAesParameters(); var keyBytes = parameters.Key; key = Convert.ToBase64String(keyBytes); settingsService.SetSetting(keySettingId, key); settingsService.SetSetting(firstKeyId, key); } }
public void ShouldEncryptAndDecrypt() { var aesEncryptor = new AesEncryptor(); var stringGenerator = new StringGenerator(); for (int i = 0; i < 1000; i++) { string randomString = stringGenerator.CreateRandomString(random.Next(1, 30)); var parameters = aesEncryptor.GenerateAesParameters(); byte[] keyBytes = parameters.Key; byte[] ivBytes = parameters.IV; byte[] encryptedBytes = aesEncryptor.EncryptString(randomString, keyBytes, ivBytes); Assert.IsNotNull(encryptedBytes); string unencrypted = aesEncryptor.DecryptBytes(encryptedBytes, keyBytes, ivBytes); Assert.AreEqual(randomString, unencrypted); } }