如何加密我的代码中的文本?

时间:2013-04-29 09:08:34

标签: java encryption for-loop char

我已经使用此代码加密文本并将新文本放在TextView中。那时我正在想办法做几件事。

  1. 如何制作每一个字母=<因为只有那么多字母(在丹麦)

  2. 如何单向更改第一个字母,另一个方式更改第二个字母,另一个方式更改第三个字母。接下来的第4个字母应该像第一个字母那样改变,第5个像第二个字母那样改变,依此类推,例如“那”改变1,2,3 =“ujdu”

    C = Integer.valueOf(ceasarNr);
    String initialString = yourString.getText().toString();
    char[] chars = initialString.toCharArray();
    for (int i = 0; i < chars.length; ++i)
        chars[i] = (char)((int)chars[i] + C);
    String resultString = new String(chars);
    krypteredeTekst.setText(resultString);
    

1 个答案:

答案 0 :(得分:0)

我相信你想为前三个字母中的每个字母使用不同的Ceasar键,然后为下一组三个字母重复相同的Ceasar键,依此类推?

我不是100%确定如何处理的不仅仅是我经常处理的字母表中的标准26个字符,但处理这个问题的一种方法是在列表中按顺序创建一个List。如果你这样做,一定要将你的字符串切换为全部小写,这样如果有大写字母你就不会得到匹配的错误

请不要我无法测试下面的代码,因此很容易出现错误(包括语法错误)我认为它应该可以工作但是你应该能够使它更优雅(例如那些内部的IF)都有点丑陋)并且应该将一些东西移出他们自己的方法。

List<String> characters = new ArrayList<String>();
...Fill the List with the alphabet in order here (best to do in it's own method)
String initialString = yourString.getText().toString().toLowercase();
char[] chars = initialString.toCharArray();
for (int i = 1; i <= chars.length; i++) {
    C = Integer.valueOf(ceasarNr1);
    if ( i%2 ==0 ) C = Integer.valueOf(ceasarNr2);
    if ( i%3 ==0 ) C = Integer.valueOf(ceasarNr3);

    chars[i-1] = characters.get((characters.indexOf(chars[i-1]) + C)%29);
}
String resultString = new String(chars);
krypteredeTekst.setText(resultString);