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

凯撒密码是一种古典加密算法,通过字母固定偏移量替换进行加密。本文提供了Go语言的加密和解密实现,但指出其安全性低,易受频率分析和暴力破解。主要用于教学和简单加密,不适用于现代安全通信。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

简介

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

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

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

Default_Caesar_cipher_encryption_algorithm_classical_cipher_1_5490fa64-51ca-4466-962e-efb97f09a547_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)
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值