1
嗨,我有一些代碼加密文本,並將其顯示在textView中,並將其作爲短信發送。加密文本出錯
該算法(letterInt *常數)%29 =新letterInt
所以基本上它是29劃分的上信值倍剩菜恆定
字母表是這樣
private List<Character> alfabet = new ArrayList<Character>();
alfabet.add('a');
alfabet.add('b');
alfabet.add('c');
alfabet.add('d');
alfabet.add('e');
alfabet.add('f');
alfabet.add('g');
alfabet.add('h');
alfabet.add('i');
alfabet.add('j');
alfabet.add('k');
alfabet.add('l');
alfabet.add('m');
alfabet.add('n');
alfabet.add('o');
alfabet.add('p');
alfabet.add('q');
alfabet.add('r');
alfabet.add('s');
alfabet.add('t');
alfabet.add('u');
alfabet.add('v');
alfabet.add('w');
alfabet.add('x');
alfabet.add('y');
alfabet.add('z');
alfabet.add('æ');
alfabet.add('ø');
alfabet.add('å');
問題是,只要C變得大於1,文本就不會被正確加密。 例如d = 4,但如果我選擇C = 4,則輸出變爲h(8),而不是p(16)。
的代碼部分是這樣的:
char[] bogstaver = tekstString.toCharArray();
for (int i = 1; i <= bogstaver.length; i++) {
if (bogstaver[i-1] == ' ' || bogstaver[i-1] == '.' || bogstaver[i-1] == '?' || bogstaver[i-1] == '!' ||
bogstaver[i-1] == ',' || bogstaver[i-1] == ';' || bogstaver[i-1] == '+' || bogstaver[i-1] == '(' ||
bogstaver[i-1] == ')' || bogstaver[i-1] == '{' || bogstaver[i-1] == '}' || bogstaver[i-1] == ':'){
continue;
}
if(CType == 1){
C = Integer.valueOf(faktorA);
CType = 2;
}
else if (CType == 2){
C = Integer.valueOf(faktorB);
CType = 3;
}
else if (CType == 3){
C = Integer.valueOf(faktorE);
CType = 1;
}
bogstaver[i-1] = alfabet.get((alfabet.indexOf(bogstaver[i-1]) * C)%29);
}
String endeligeTekst = new String(bogstaver);
if (k == 1){
krypteredeTekst.setText(endeligeTekst);
}
else{
sendString(endeligeTekst, Nr);
}
你能解釋一下你使用的加密算法,好嗎? – Ridcully 2013-05-11 12:14:11
您可以加入的「alfabet」的定義是什麼? – 2013-05-11 12:16:27
現在我已經加入這兩種算法和字母:) – 2013-05-11 12:22:33