Skip to content

Commit 5bbca56

Browse files
committed
avoid allocation of key in trithemius cipher
1 parent a9ccddb commit 5bbca56

File tree

1 file changed

+4
-2
lines changed

1 file changed

+4
-2
lines changed

src/Science.Cryptography.Ciphers/Ciphers/TrithemiusCipher.cs

+4-2
Original file line numberDiff line numberDiff line change
@@ -13,17 +13,19 @@ public TrithemiusCipher(Alphabet alphabet)
1313
{
1414
Alphabet = alphabet;
1515
_inner = new(alphabet);
16+
_innerKey = alphabet.ToCharArray();
1617
}
1718
public TrithemiusCipher()
1819
: this(WellKnownAlphabets.English)
1920
{ }
2021

2122
private readonly VigenèreCipher _inner;
23+
private readonly char[] _innerKey;
2224

2325
public Alphabet Alphabet { get; }
2426

2527

26-
public void Encrypt(ReadOnlySpan<char> plaintext, Span<char> ciphertext, out int written) => _inner.Encrypt(plaintext, ciphertext, Alphabet.ToCharArray(), out written);
28+
public void Encrypt(ReadOnlySpan<char> plaintext, Span<char> ciphertext, out int written) => _inner.Encrypt(plaintext, ciphertext, _innerKey, out written);
2729

28-
public void Decrypt(ReadOnlySpan<char> ciphertext, Span<char> plaintext, out int written) => _inner.Decrypt(ciphertext, plaintext, Alphabet.ToCharArray(), out written);
30+
public void Decrypt(ReadOnlySpan<char> ciphertext, Span<char> plaintext, out int written) => _inner.Decrypt(ciphertext, plaintext, _innerKey, out written);
2931
}

0 commit comments

Comments
 (0)