你好,凯撒算法的原理很简单,就是对字母进行移位,比如最常用的右移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 = string.Empty;
foreach (char c in text)
{
if (char.IsLetter(c))
{
char newChar = (char)(c + 3);
if (!char.IsLetter(newChar))
{
newChar -= (char)26;
}
encrptString += newChar;
}
else
{
encrptString+=c;
}
}
return encrptString;
}
public static string Decrypt(string text)
{
string decrptString = string.Empty;
foreach (char c in text)
{
if (char.IsLetter(c))
{
char newChar = (char)(c - 3);
if (!char.IsLetter(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!";
Console.WriteLine("原文:{0}", testString);
string encryptStr = KaiSa.Encrypt(testString);
Console.WriteLine("秘文:{0}", encryptStr);
string decryptStr = KaiSa.Decrypt(encryptStr);
Console.WriteLine("明文:{0}", decryptStr);
Console.ReadKey();
}
}
}
区分大小写的凯撒密码。
在凯撒密码的基础上针对大写与小字字符区分处理即可:
解密只需要将7换成19(因为26-7=19),或者使用-7也可以:
print(caesarcipher(caesarcipher('Student!', 7),19))
凯撒密码作为一种最为古老的对称加密体制,在古罗马的时候都已经很流行,他的基本思想是:通过把字母移动一定的位数来实现加密和解密。明文中的所有字母都在字母表上向后(或向前)按照一个固定数目进行偏移后被替换成密文。例如,当偏移量是3的时候,所有的字母A将被替换成D,B变成E,以此类推X将变成A,Y变成B,Z变成C。由此可见,位数就是凯撒密码加密和解密的密钥。我对“怎么用凯撒密码加密一句中文”产生了疑问,实际上解决方法可以有很多种,例如用数组中不断地“大、风、方……”这些词的简单位移,事实上经过搜索,我选择了使用的变换来完成。即,可以用汉字对应的字符码来进行变换操作,这样出来的还是汉字。比如汉字“一”是0x4e00,凯撒移位为1的话0x4e00+1=0x4e01,对应的汉字是“丁”,如果移位为三,就是0x4e03,对应汉字是“七”。将汉字范围内的整型转换为16进制字符串作为后缀,前面加入\u,形成对应的unicode值。这段代码并不复杂,遇到的问题在于:当我在main函数调用时,注释掉的该行(如下)不能够实现我把转义字符\去掉,即最后输出的是\u593a这种形式,而非unicode值对应的“太”。只要把得到的报文中的“\”换成“\”,我想就能正常地将Unicode输出成中文了,首先想到的是使用字符串的方法。使用(“\\“,“\“),但是发现输出结果没有任何变化。 解决方法是:查了下API文档,方法的定义是:public String replaceAll( String regex,String replacement) 。
明码是:I LOVE YOU
如果用凯撒密码左移3位得到的是:F ILSB VLR
再把凯撒密码转换成33 43 53 74 22 83 53 73
用摩斯电码打出转换的数字就可以了..._ _/..._ _/...._/..._ _/...../..._ _/_ _.../...._/.._ _ _/.._ _ _/_ _ _../..._ _/...../..._ _/_ _.../..._ _
扩展资料:
摩斯密码特殊符号:
这是一些有特殊意义的点划组合。它们由二个字母的摩尔斯电码连成一个使用,这样可以省去正常时把它们做为两个字母发送所必须的中间间隔时间。
AR:·—·—·(停止,消息结束)
AS:·—···(等待)
K:—·—(邀请发射信号)(一般跟随AR,表示“该你了”)
SK:···—·—(终止,联络结束)
BT:—···—(分隔符)
···—·(我将重新发送最后一个单词)
·· ··(同样)
········(错误)
参考资料来源:百度百科-摩尔斯电码