java凯撒代码 凯撒密码c++代码

各位大哥,在Java中用数组写的循环队列实现凯撒循环密码啊?

import java.*;

10年积累的成都做网站、网站建设经验,可以快速应对客户对网站的新想法和需求。提供各种问题对应的解决方案。让选择我们的客户得到更好、更有力的网络服务。我虽然不认识你,你也不认识我。但先网站设计后付款的网站建设流程,更有玉溪免费网站建设让你可以放心的选择与我们合作。

public class Practise {

public static void main(String[] args) {

String P = new String();// 明文

String K = new String();// 密钥

String C = new String();// 密文

short LR=-1;//间隔的方向,向左为-1,向右为1

P = "benrencainiaoyizhi";

K = "P";

C = "QTCGTCRPXCXPDNXOWX";

System.out.println("明文:"+P);

System.out.println("密钥:"+K);

System.out.println("密文:"+C+"\n");

CaesarCode caesar=new CaesarCode();

LR=1;

System.out.println("加密:"+caesar.encrypt(P, K, LR));

LR=-1;

System.out.println("解密:"+caesar.decrypt(K, C, LR).toLowerCase());

}

}

class CaesarCode {

private char alphabet[] = new char[26];//存储字母表

//加密

protected String encrypt(String P,String K,short LR)

{

int i=0,j=0,n=0;//空陪n是间隔悔亏氏

String C=new String();//密文

P=P.toUpperCase();

P=getNewP(P);

K=K.toUpperCase();

n=getN(K);

//将明文转换成密文

for(i=0;iP.length();i++)

{

j=String.valueOf(alphabet).indexOf(P.charAt(i));//获取密文字母在字母表所在的下标

j=(j+n*LR+26)%26;//向左或向右移动n位

C+=(char)(j+65);

}

return C;

}

//解密

protected String decrypt(String K,String C,short LR)

{

int i=0,j=0,n=0;//n是间隔

String P=new String();//明文碧散

K=K.toUpperCase();

C=C.replaceAll(" +"," ");

C=C.toUpperCase();

n=getN(K);

//将密文转换成明文

for(i=0;iC.length();i++)

{

j=String.valueOf(alphabet).indexOf(C.charAt(i));//获取密文字母在字母表所在的下标

j=(j+n*LR+26)%26;//向左或向右移动n位

P+=(char)(j+65);

}

return P;

}

//获取经过处理的明文

private String getNewP(String P)

{

int i=0;

char p[] = P.toCharArray();

for (i = 0; i P.length(); i++) {

if (p[i] 'A' || p[i] 'Z')// 将非字母换成空格

{

p[i] = ' ';

}

}

P = String.valueOf(p);

P = P.replaceAll(" +", "");// 将明文的所有空格去掉

return P;

}

//获取间隔

private int getN(String K)

{

int i=0,n=0;

//生成字母表

for(i=0;i26;i++)

{

alphabet[i]=(char)(i+65);//字母A在ASCII表中的值是065

}

if(isNum(K))

{

n=Integer.parseInt(K);

}

else

{

n=String.valueOf(alphabet).indexOf(K);//当K不是数字时适用

}

return n;

}

//判断密钥是否为数字

private boolean isNum(String K)

{

return K.matches("[0-9]+");//+表示1个或多个(如"3"或"225")

}

}

假面骑士恺撒腰带代码

凯撒的变身密码是913

假面骑士kaixa中文名为假面骑士凯撒,特点是使用“Kaixa手机”,输入变身代码“913”后闭合并插入“Kaixa驱动器脊友”后变身。巨大企业薯岩SMART BRAIN社为了Orphnoch之王而制的3条腰带中的其中一条。变身者樱手槐为草加雅人,为了保证提供稳定的高功率量子流设置了两条量子流管道,也称作“双通道”。小说中被“奥尔菲诺对抗组织”所量产,登场的包括草加雅人在内仅3人。

java Caesar密码程序 凯撒密码问题!!!char c = abc.charAt(i);

不用类也是可以做的,不过看起来有些哆嗦,随便看一下吧,自己再改简单一点

using namespace std;

const int N=20;

void main()

{ int k;

void encipher(char c[],int b);

void decipher(char c[],int b);

char plaintext[N];

cout"Please enter the keywards k(0k26):"endl;

cink;

cout"Please enter the plaintext:"endl;

cinplaintext;

cout"the ciphertext is:";

encipher(plaintext,k);

cout"the plaintext is:";

decipher(plaintext,k);

}

void encipher(char c[],int b)

{

int i;

int a[N];

for(i=0;iN;i++)

a[i]=c[i]; //注:128~255是IBM-PC上专用的桥敏,ASCII代码中000-127是标准的,如果是z加20的就会超出128,故先赋给整型,然后再转换过来,

for(i=0;a[i]!='\0'iN;i++)

{

if((a[i]='A'a[i]='Z')||(a[i]='a'a[i]='z'))

{

a[i]=a[i]+b;

if((a[i]'Z'a[i]='Z'+b)||(a[i]'z'))

a[i]=a[i]-26;}

}

for(i=0;i汪消乱N;i++)

c[i]=a[i];

for(i=0;iN;i++)

coutc[i];

coutendl;

}

void decipher(char c[],int b)

{

int i;

for(i=0;c[i]!='\0'iN;i++)

{

if((c[i]='A'c[i]='Z')||(c[i]='a'c[i]='z'))

{

c[i]=c[i]-b;

if((c[i]='a'-bc[i]困档'a')||c[i]'A')

c[i]=c[i]+26;}

}

for(i=0;iN;i++)

coutc[i];

}

凯撒密码java编程实现图形界面化代码

class Caesar: def __init__(self): a = list('abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ ,.-!\'"') b = a[3:] + a[:3] self.emap = dict(zip(a,b)) self.dmap = dict(zip(b,a)) def encode(self, text): tmp = [ (x in self.emap and self.emap[x] or x) for x in text ] return ''.join(tmp) def decode(self, text): tmp = [ (x in self.dmap and self.dmap[x] or x) for x in text ] return ''.join(tmp)


网站栏目:java凯撒代码 凯撒密码c++代码
文章网址:http://ybzwz.com/article/ddpdjej.html