我正在尝试加密和解密代码。此加密代码 - >
String text="I love StackOverflow";
key="love";
String s=text.toLowerCase();;
String s1=key.toLowerCase();;
char key1[];
key1=new char[s1.length()];
for(int i=0;i<s1.length();i++)
{
key1[i]=s1.charAt(i);
}
int k[]=new int[key1.length];
char c[]=new char[s.length()];
int cc[]=new int [s.length()];
//int r[]=new int[s.length()];
int ss[]=new int[s.length()];
char result[]=new char[s.length()];
for(int i=0;i<s.length();i++)
{
c[i]=s.charAt(i);
cc[i]=(int)c[i]-97;
}
for(int i=0;i<key1.length;i++)
{
k[i]=(int)key1[i]-97;
}
String g;
for(int i=0;i<s.length();i++)
{
ss[i]=(k[i%s1.length()]+cc[i])%26;
result[i]=(char)(ss[i]+97);
}
g=String.copyValueOf(result);
label.setText(g.toUpperCase());
}
它给了我这个结果 - &gt; THGSGSOWEOXOZJZVQZJA
并且,当我运行解密消息时,它给我 - &gt; ITLOVETSTACKOVERFLOW(但我想 - &gt;我喜欢STACKOVERFLOW)没有空间的问题 - &gt;
我的解密代码在
String text2="THGSGSOWEOXOZJZVQZJA";
text2=text2.toLowerCase();
String key="love";
String s=text2;
String s1=key;
char h[]=new char[s.length()];
int hh[]=new int[s.length()];
for(int i=0;i<s.length();i++)
{
h[i]=s.charAt(i);
hh[i]=h[i];
hh[i]=(int)hh[i]-97;
}
char k[]=new char[s1.length()];
int kk[]=new int[s1.length()];
for(int i=0;i<s1.length();i++)
{
k[i]=s1.charAt(i);
kk[i]=k[i];
kk[i]=(int)kk[i]-97;
}
int re1[]=new int[s.length()];
char ref[]=new char[s.length()];
for(int i=0;i<s.length();i++)
{
re1[i]=hh[i]-kk[i%s1.length()];
}
String value;
for(int i=0;i<s.length();i++)
{
if(re1[i]<0)
{
re1[i]=re1[i]+26;
}
ref[i]=(char) (re1[i]+97);
}
value=String.copyValueOf(ref);
// t2.setText(g);
label_1.setText(value.toUpperCase());
任何想法我如何获得空间或我如何检测它 我问过两个愚蠢的问题,为什么我在我的问题中得到否定?我认为这对你们来说很难:P
答案 0 :(得分:1)
我当然希望这是你和你don't plan to roll your own crypto算法的主要思想练习。
问题是你过滤掉了空格:)
如果您将%26
和相应的+26
增加到32
(空间的ascii),则可以正常工作。