public async Task TestSaveAsync() { var ioServiceMock = new Mock <IIOService>(); var encryptedPersister = new EncryptedPersister(_symmetricAlgorithmCryptographyService, ioServiceMock.Object); await encryptedPersister.SaveAsync(filename, new Credentials { Username = Username, Password = Password }); ioServiceMock.Verify(s => s.SaveAsync(filename, EncryptedText), Times.Once); ioServiceMock.VerifyNoOtherCalls(); }
public async Task TestLoadAsync() { var ioServiceMock = new Mock <IIOService>(); ioServiceMock.Setup(s => s.LoadAsync(filename)).Returns(Task.FromResult(EncryptedText)); var encryptedPersister = new EncryptedPersister(_symmetricAlgorithmCryptographyService, ioServiceMock.Object); var credentials = await encryptedPersister.LoadAsync <Credentials>(filename); ioServiceMock.Verify(s => s.LoadAsync(filename), Times.Once); ioServiceMock.VerifyNoOtherCalls(); Assert.AreEqual(Username, credentials.Username); Assert.AreEqual(Password, credentials.Password); }
private async static Task RunAsync() { Console.WriteLine($"Plain Text: {PlainText}"); OneWayEncrpytionService = new MD5CryptographyService(); var hash = OneWayEncrpytionService.Encrypt(PlainText); Console.WriteLine($"MD5 Hashed: {hash}"); OneWayEncrpytionService = new HashCryptographyService(new SHA1Managed()); hash = OneWayEncrpytionService.Encrypt(PlainText); Console.WriteLine($"SHA1 Hashed: {hash}"); var symmetricAlgorithmCryptographyService = new SymmetricAlgorithmCryptographyService( new AesCryptoServiceProvider { Mode = CipherMode.CBC, KeySize = 128, Key = Encoding.UTF8.GetBytes("1234567890123456"), IV = Encoding.UTF8.GetBytes("0234567890123456") }); CryptographyService = symmetricAlgorithmCryptographyService; var encryptedText = CryptographyService.Encrypt(PlainText); Console.WriteLine($"AES Encrypted: {encryptedText}"); var decryptedText = CryptographyService.Decrypt(encryptedText).Trim(); Console.WriteLine($"AES Decrypted: {decryptedText}"); const string filename = "Credentials.txt"; var encryptedPersister = new EncryptedPersister(CryptographyService, new FileIOService()); await encryptedPersister.SaveAsync(filename, new Credentials { Username = "******", Password = "******" }); var credentials = await encryptedPersister.LoadAsync<Credentials>(filename); Console.WriteLine($"AES Encrypted File: {await File.ReadAllTextAsync(filename)}"); Console.WriteLine($"AES Decrypted Credentials Username: {credentials.Username} Password: {credentials.Password}"); }