
你好,凯撒算法的原理很简单,就是对字母进行移位,比如最常用的右移3位。
比如字符'a'变成'd',字母'Z'变成'C'。
以下是一个凯撒算法加解密的示例程序,楼主可以参考:
// Copyright @ quark
// Date: 2010-10-23
using System;
namespace BaiduTest
{
public class KaiSa
{
public static string Encrypt(string text)
{
string encrptString = stringEmpty;
foreach (char c in text)
{
if (charIsLetter(c))
{
char newChar = (char)(c + 3);
if (!charIsLetter(newChar))
{
newChar -= (char)26;
}
encrptString += newChar;
}
else
{
encrptString+=c;
}
}
return encrptString;
}
public static string Decrypt(string text)
{
string decrptString = stringEmpty;
foreach (char c in text)
{
if (charIsLetter(c))
{
char newChar = (char)(c - 3);
if (!charIsLetter(newChar))
{
newChar += (char)26;
}
decrptString += newChar;
}
else
{
decrptString += c;
}
}
return decrptString;
}
}
class Program
{
public static void Main(string[] args)
{
string testString = "xyz XYZ ABC abc Hello, World!";
ConsoleWriteLine("原文:{0}", testString);
string encryptStr = KaiSaEncrypt(testString);
ConsoleWriteLine("秘文:{0}", encryptStr);
string decryptStr = KaiSaDecrypt(encryptStr);
ConsoleWriteLine("明文:{0}", decryptStr);
ConsoleReadKey();
}
}
}
根据苏维托尼乌斯的记载,恺撒曾用此方法对重要的军事信息进行加密: 如果需要保密,信中便用暗号,也即是改变字母顺序,使局外人无法组成一个单词。如果想要读懂和理解它们的意思,得用第4个字母置换第一个字母,即以D代A,余此类推。
同样,奥古斯都也使用过类似方式,只不过他是把字母向右移动一位,而且末尾不折回。每当他用密语写作时,他都用B代表A,C代表B,其余的字母也依同样的规则;用A代表Z。
扩展资料:
密码的使用最早可以追溯到古罗马时期,《高卢战记》有描述恺撒曾经使用密码来传递信息,即所谓的“恺撒密码”,它是一种替代密码,通过将字母按顺序推后起3位起到加密作用,如将字母A换作字母D,将字母B换作字母E。因据说恺撒是率先使用加密函的古代将领之一,因此这种加密方法被称为恺撒密码。这是一种简单的加密方法,这种密码的密度是很低的,只需简单地统计字频就可以破译。 现今又叫“移位密码”,只不过移动的为数不一定是3位而已。
参考资料来源:百度百科-凯撒密码
#include<stdioh>
#include<stringh>
void main ()
{
char str[100];
char str1[100];
printf("输入字符串:");
scanf("%s",&str);
int len;
len=strlen(str);
for(int i=0;i<len;i++)
{
str1[i]=(str[i]-97+3)%26+97;
}
str1[len]='\0';
printf ("密文为:%s\n",str1);
}
def encryption():
str_raw = input("请输入明文:")
k = int(input("请输入位移值:"))
str_change = str_rawlower()
str_list = list(str_change)
str_list_encry = str_list
i = 0
while i < len(str_list):
if ord(str_list[i]) < 123-k:
str_list_encry[i] = chr(ord(str_list[i]) + k)
else:
print ("解密结果为:"+""join(str_list_decry))
while True:
print (u"1 加密")
print(u"2 解密")
choice = input("请选择:")
if choice == "1": encryption()
elif choice == "2": decryption()
else: print (u"您的输入有误!")
凯撒密码是一种简单的加密方法,它通过将明文中的每个字母按照一定的偏移量进行替换来实现加密。在编程中,我们可以使用Python字典来实现凯撒密码的加密和解密过程。具体步骤如下:
1 定义一个字典,将字母和其对应的偏移量作为键值对存储。例如,{'A': 3, 'B': 4, 'C': 5, }
2 定义加密函数和解密函数。加密函数接受一个明文字符串和偏移量作为参数,遍历明文中的每个字母,查找字典中对应的偏移量并替换原来的字母。解密函数接受一个密文字符串和偏移量作为参数,同样遍历密文中的每个字母,查找字典中对应的反向偏移量并替换原来的字母。
3 测试加密和解密函数。可以使用一些简单的明文和密文进行测试,例如将明文"HELLO"加密为"KHOOR",再将密文"KHOOR"解密为"HELLO"。
使用字典实现凯撒密码可以简化代码的实现,并且可以方便地修改偏移量或添加其他加密规则。同时,字典的查找 *** 作也可以快速地完成加密和解密过程。
凯撒密码就是简单的加上一个数,'a'+3='d';'z'+3='c' 假设原文全是小写字母,那么 char plain[N]={}; //明文 char cipher[N]={};//密文 int key=3; int i=0,temp; for(i=0;i<N;i++) {if(plain[i]!=' ') {temp=plain[i]+key-'a'; temp=temp%26; cipher[i]=temp+'a'; } else cipher[i]=plain[i]; } 这样就完成了加密,密文数组里面就是对原文加密后的密文,key是密钥。
/
和楼上的相比,或许 看上去很烦
ch[i] +=5;
if (ch[i] > 'Z')
{
ch[i] -= 26;
}
可以改成和 楼上的 方法
等价于 ch[i] = 'A' + (ch[i] - 'A' + 5) % 26;
/
# include <stdioh>
# include <stdlibh> //用到了system(); 不写 ,可以用 getchar();
#define strwidth 117 //定义长度
int main(void)
{
char ch[strwidth];
int i ;
printf("请输入密码:");
gets(ch); //输入数据,用gets(); 保留了空格
for (i = 0; i < strwidth ;i++ )
{
if (ch[i] >= 'a' && ch[i] <= 'z' ) //判断是否小写字母
{
ch[i] +=5;
if (ch[i] > 'z') //不解释,我想这样,理解可能会方便点吧
{
ch[i] -= 26;
}
}
else if ( ch[i] >= 'A' && ch[i] <= 'Z') //判断是否大写字母
{
ch[i] +=5;
if (ch[i] > 'Z')
{
ch[i] -= 26;
}
}
}
printf("加密后为:%s\n" , ch); //输出数据
system("pause");
return 0;
}
/
或者 这样
/
# include <stdioh>
# include <stdlibh> //用到了system(); 不写 ,可以用 getchar();
#define strwidth 117 //定义长度
int main(void)
{
char ch[strwidth];
int i ;
printf("请输入密码:");
gets(ch); //输入数据,用gets(); 保留了空格
for (i = 0; i < strwidth ;i++ )
{
if (ch[i] >= 'a' && ch[i] <= 'z' || ch[i] >= 'A' && ch[i] <= 'Z' ) //判断是否是字母
{
ch[i] +=5;
if ( ch[i]>'Z' && ch[i] <= 'Z' + 5 || ch[i] > 'z' )
{
ch[i] -= 26;
}
}
}
printf("加密后为:%s\n" , ch); //输出数据
system("pause");
return 0;
}
以上就是关于用C#实现凯撒密码算法。急急急!!全部的内容,包括:用C#实现凯撒密码算法。急急急!!、恺撒密码的加密方法是什么、凯撒密码 C语言等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)