用C#实现凯撒密码算法。急急急!!

用C#实现凯撒密码算法。急急急!!,第1张

你好,凯撒算法的原理很简单,就是对字母进行移位,比如最常用的右移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语言等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zz/9497493.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-29
下一篇2023-04-29

发表评论

登录后才能评论

评论列表(0条)

    保存