【密码学入门】古典加密算法-凯撒密码 Go语言实现

简介

凯撒密码属于古典加密算法。古典加密算法是指在计算机和现代密码学发展之前使用的加密算法。凯撒密码是古代罗马时期由恺撒大帝使用的一种简单替换密码。

凯撒密码通过将字母按照固定的偏移量进行替换来加密数据。例如,将每个字母向后偏移3位,即A变为D,B变为E,以此类推。解密则是将每个字母向前偏移相同的偏移量。

凯撒密码是一种简单的替换密码,安全性非常低,容易受到频率分析和暴力破解等攻击方法的攻击。它主要用于教学目的和基本的加密需求,而不适用于现代安全通信中的实际应用。

【密码学入门】古典加密算法-凯撒密码 Go语言实现_第1张图片

代码实现

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)
}

你可能感兴趣的:(Go语言,密码学,密码学,golang,java)