Create A Quick and Easy Caesar Cipher
... a Caesar cipher ... is one of the simplest and most widely known encryption techniques. It is a type of substitution cipher in which each letter in the plaintext is replaced by a letter some fixed number of positions down the alphabet. For example, with a left shift of 3, D would be replaced by A, E would become B, and so on. The method is named after Julius Caesar, who used it in his private correspondence. Wikipedia
I was signing up for a website that teaches the basics of cryptography and instead of a captcha they asked me to decrypt a four words than were encrypted with a Caeser Cipher.
So naturally I work a program to do it for me!
Once you know the byte representation of a few key letters the logic is very simple.
Shifting Forward:
func shiftRight(words string, amount byte) string {
var output string
for _, v := range []byte(words) {
var b byte
switch v {
case 32: // Check for spaces
b = 32
case 90: // Change "Z" to "A"
b = 65
case 122: // Change "z" to "a"
b = 97
default:
b = v + amount
}
output = fmt.Sprintf("%s%s", output, string(b))
}
return output
}
Shifting Backward
The logic is identical to shifting forward with only a few changes. Such as swapping cases 2 and 3 to look for the A's instead of the Z's. As well as changing the addition to subtraction.
func shiftLeft(words string, amount byte) string {
var output string
for _, v := range []byte(words) {
var b byte
switch v {
case 32: // Check for spaces
b = 32
case 65: // Change "A" to "Z"
b = 90
case 97: // Change "a" to "z"
b = 122
default:
b = v - amount
}
output = fmt.Sprintf("%s%s", output, string(b))
}
return output
}
Execution:
Running the above functions is as easy as assigning the function to a variable. Then passing in the string you want to encrypt or decrypt with the amount of shifting and printing the output.
func main() {
word := "J nbef b Dbftbs djqifs"
decrypted := shiftLeft(word, 1)
fmt.Println(decrypted)
}
Don't want to miss a post?
Sign up for the (plaintext) email list by sending an email to:
~jrswab/blogs+subscribe@lists.sr.ht.
By subscribing to the email list, you agree to nothing more than wanting to receive an email when a new blog post is released.
Your email address is private to both me and other subscribers unless you choose to reply to a thread.
Leave Create A Quick and Easy Caesar Cipher to:
Read more #technology posts
Best Posts From J. R. Swab
We have not curated any of jrswab's posts yet. But you can encourage our curation team to review posts by visiting them regularly and by referring other readers. Because we give priority to frequently read content.