如何在此加密代码中添加空间

时间:2014-12-09 09:09:33

标签: java encryption

我正在尝试加密和解密代码。此加密代码 - >

              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

1 个答案:

答案 0 :(得分:1)

我当然希望这是你和你don't plan to roll your own crypto算法的主要思想练习。

问题是你过滤掉了空格:)

如果您将%26和相应的+26增加到32(空间的ascii),则可以正常工作。