public void ToBuffer_ShouldBeReversible() { using (var randomnessProvider = RandomNumberGenerator.Create()) { // Arrange. var processor = new SymmetricStringProcessor(randomnessProvider); var plaintextObject = "䆟`ಮ䷆ʘ‣⦸⏹ⰄͶa✰ṁ亡Zᨖ0༂⽔9㗰"; using (var target = SecureSymmetricKey.New()) { // Arrange. var ciphertext = processor.Encrypt(plaintextObject, target); // Act. using (var buffer = target.ToBuffer()) { using (var parityKey = SecureSymmetricKey.FromBuffer(buffer)) { // Arrange. var result = processor.Decrypt(ciphertext, parityKey); // Assert. result.Should().Be(plaintextObject); } } } } }
private static void Encrypt_ShouldBeReversible_UsingCascadingSymmetricKey(CascadingSymmetricKey key) { using (var randomnessProvider = RandomNumberGenerator.Create()) { // Arrange. var target = new SymmetricStringProcessor(randomnessProvider); var plaintextObject = "䆟`ಮ䷆ʘ‣⦸⏹ⰄͶa✰ṁ亡Zᨖ0༂⽔9㗰"; // Act. var ciphertextResult = target.Encrypt(plaintextObject, key); // Assert. ciphertextResult.Should().NotBeNullOrEmpty(); ciphertextResult.Count(value => value == 0x00).Should().NotBe(ciphertextResult.Length); // Act. var plaintextResult = target.Decrypt(ciphertextResult, key); // Assert. plaintextResult.Should().NotBeNullOrEmpty(); plaintextResult.Length.Should().Be(plaintextObject.Length); plaintextResult.Count(value => value == 0x00).Should().NotBe(plaintextResult.Length); for (var i = 0; i < plaintextResult.Length; i++) { // Assert. plaintextResult[i].Should().Be(plaintextObject[i]); } } }
private static void Encrypt_ShouldBeReversible_UsingSecureSymmetricKey(SymmetricAlgorithmSpecification algorithm) { using (var randomnessProvider = RandomNumberGenerator.Create()) { // Arrange. var target = new SymmetricStringProcessor(randomnessProvider); var plaintextObject = "䆟`ಮ䷆ʘ‣⦸⏹ⰄͶa✰ṁ亡Zᨖ0༂⽔9㗰"; using (var key = SecureSymmetricKey.New(algorithm)) { // Act. var ciphertext = target.Encrypt(plaintextObject, key); // Assert. ciphertext.Should().NotBeNullOrEmpty(); ciphertext.Count(value => value == 0x00).Should().NotBe(ciphertext.Length); // Act. var plaintext = target.Decrypt(ciphertext, key); // Assert. plaintext.Should().NotBeNullOrEmpty(); plaintext.Should().Be(plaintextObject); } } }
public void EncryptToBase64String_ShouldBeReversible() { using (var randomnessProvider = RandomNumberGenerator.Create()) { // Arrange. var target = new SymmetricStringProcessor(randomnessProvider); var algorithm = SymmetricAlgorithmSpecification.Aes128Cbc; var plaintextObject = "aZ09`ಮ"; using (var key = SecureSymmetricKey.New(algorithm)) { // Act. var ciphertext = target.EncryptToBase64String(plaintextObject, key); // Assert. ciphertext.Should().NotBeNullOrEmpty(); // Act. var result = target.DecryptFromBase64String(ciphertext, key); // Assert. result.Should().NotBeNullOrEmpty(); result.Should().Be(plaintextObject); } } }