简介
凯撒密码属于古典加密算法。古典加密算法是指在计算机和现代密码学发展之前使用的加密算法。凯撒密码是古代罗马时期由恺撒大帝使用的一种简单替换密码。
凯撒密码通过将字母按照固定的偏移量进行替换来加密数据。例如,将每个字母向后偏移3位,即A变为D,B变为E,以此类推。解密则是将每个字母向前偏移相同的偏移量。
凯撒密码是一种简单的替换密码,安全性非常低,容易受到频率分析和暴力破解等攻击方法的攻击。它主要用于教学目的和基本的加密需求,而不适用于现代安全通信中的实际应用。
代码实现
package main
import (
"fmt"
"strings"
)
func encryptCaesar(plainText string, shift int) string {
cipherText := ""
shift = shift % 26 // 确保偏移量在0-25之间
for _, char := range plainText {
if char >= 'a' && char <= 'z' {
// 对小写字母进行偏移
char = 'a' + (char-'a'+rune(shift))%26
} else if char >= 'A' && char <= 'Z' {
// 对大写字母进行偏移
char = 'A' + (char-'A'+rune(shift))%26
}
cipherText += string(char)
}
return cipherText
}
func decryptCaesar(cipherText string, shift int) string {
plainText := ""
shift = shift % 26 // 确保偏移量在0-25之间
for _, char := range cipherText {
if char >= 'a' && char <= 'z' {
// 对小写字母进行反向偏移
char = 'a' + (char-'a'-rune(shift)+26)%26
} else if char >= 'A' && char <= 'Z' {
// 对大写字母进行反向偏移
char = 'A' + (char-'A'-rune(shift)+26)%26
}
plainText += string(char)
}
return plainText
}
func main() {
// 原文
plainText := "Hello, World!"
shift := 3
// 加密
cipherText := encryptCaesar(strings.ToUpper(plainText), shift)
fmt.Println("Cipher Text:", cipherText)
// 解密
decryptedText := decryptCaesar(cipherText, shift)
fmt.Println("Decrypted Text:", decryptedText)
}