Caesars Cipher in Navision

Lately I have been reading some books about Cryptology and there I stumbled upon Caesars Cipher.

Caesars Cipher is a very simple form of Cryptation. Its method is to replace each plaintext letter with one a fixed number of places down the alphabet. The fixed number is the Key.

Ex. with a key 3 – the letter A will become D. B will become E etc.

So the word SECRET will be come VHFUHW.

This form for cryptology can be represented by the following formular:

c = p + k mod n

where c = cipher, p = plaintext, k = key, n = number of letters in the alphabet

Letters (p) will be represented as numbers, where a = 0, b = 1 etc.

If the cipher is greater than the number of letters in the alphabet, we have to start from the begin of the alphabet – this is solved by mod.

Ex. the letter K & letter Z:

K is the 10’te letter in the alphabet. We use the key 3 and there is 26 letters in the used alphabet.

c = p + k mod n = 10 + 3 mod 26 = 13, which gives us the letter N.

Z is the 26’te letter in the alphabet.

c = 26 + 3 mod 26 = 29 mod 26 = 3, which gives us the letter C.

Now that the theory is on place – we can look on some functions for Navision.

To Encrypt you can use this function:

Key := 3;
NoLetters := 26;

IF TextToCrypt = '' THEN
   EXIT;

// Remove spaces
ClearText := UPPERCASE(DELCHR(TextToCrypt,'=',' '));

// Encrypt letter by letter
FOR i := 1 TO STRLEN(ClearText) DO BEGIN

   // Char to Int - where A = 0
   ClearChar := ClearText[i] - 65;

   //Encrypt char - +65 to get a letter
   CryptChar := ((ClearChar + Key) MOD NoLetters) + 65;

   // Add char to crypt text
   CryptText += FORMAT(CryptChar);
END;

TextToCrypt := UPPERCASE(TextToCrypt);

Ok now you can encrypt – but what about decryption. Decryption is actually the same as encryption – all you have to do, is to use a different key 🙂

So which key to use? The key to encrypt was 3 and the number of letters was 26. To decrypt you have to deduct 3 letters. This gives us the decrypt key equals 23 (number of letters – key = 23).

Decrypt example:

Key := 3;
NoLetters := 26;
DecryptKey := NoLetters - Key;

IF CryptText = '' THEN
   EXIT;

//DeCrypt letter by letter
FOR i := 1 TO STRLEN(CryptText) DO BEGIN

   //Char to Int - where A = 0
   CryptChar := CryptText[i] - 65;

   //Encrypt char - +65 to get a letter
   ClearChar := ((CryptChar + DecryptKey) MOD NoLetters) + 65;

   // Add char to crypt text
   DeCryptText += FORMAT(ClearChar);
END;

If you compare the two functions, you will see that the encryption and decryptions functions are pretty much the same – they only use different keys.

Now you can encrypt and decrypt with Caesars Cipher in Navision 🙂

6 Comments

  1. Nice work 🙂 Lad mig gætte; du læste også Digital Fortress og blev også skuffet/irriteret over Dan Browns lemfældige/sløsede omgang med virkeligheden. Men kunne alligevel ikke helt slippe de ‘kryptiske’/finurlige tankegange i hans bog?

  2. Tak! Hvor kunne du gætte det 😉

    Har tidligere beskræftiget mig med kryptering og efter at jeg havde læst Digital Fortress, valgte jeg at genopfriske hukommelsen og opdatere min viden på området.

    Da jeg i hverdagen arbejder med Navision – kunne jeg ikke lade være med at teste Cæsars krypteringsmetode i denne.

    Hvem ved måske, laver jeg et indlæg om andre metoder på et tidspunkt 😉

    And for you guys & gals – that doesn’t understand Danish. In short terms… I’m just telling Jens, that my inspiration to this article was Digital Fortress from Dan Brown and that I might in the future write an article about another Cryptation method.

  3. I just study car piece of yours and it had been very good. This is a excellent article thank you for sharing this informative info. I’ll visit your blog frequently for some most recent post.

  4. What’s up to all, the contents existing at this site are
    truly amazing for people knowledge, well, keep up the nice work fellows.

Leave a Reply to Rusasteappaky-web Cancel reply

Your email address will not be published.


*


This site uses Akismet to reduce spam. Learn how your comment data is processed.