I came across this code:
Byte Vigenere Cipher, error with decryption
But trying to follow the rules I made a new question about it.
The following algorithm is used and I'm trying to get a better understanding into it:
Byte[] result= new Byte[plaintext.Length];
key = key.Trim().ToUpper();
int keyIndex = 0;
int keylength = key.Length;
for (int i = 0; i < plaintext.Length; i++)
{
keyIndex = keyIndex % keylength;
int shift = (int)key[keyIndex] - 65;
result[i] = (byte)(((int)plaintext[i] + shift) % 256);
keyIndex++;
}
Am I right in thinking the key needs to be trimmed as it is in Unicode? therefore subtracting 65 from a capital produces a common character/symbol?
The ASCII value for the capital A is 65. All characters in
key
are converted to uppercase, this would simply return the alphabetical index of each letter inkey
.Each letter in
key
is converted to a number that way, and each letter in the original string is "shifted up the alphabet" that number of positions.If your key was
BAD
, this would turn into the numbers 1, 0 and 3, then applied to "hello world" as follows:You can demonstrate this by adding this code below yours: