안녕하세요 저는 텍스트를 암호화하여 textView에 표시하고 SMS로 보내는 코드가 있습니다.암호화 된 텍스트가 잘못 나온다
알고리즘은 (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를 선택하면 출력은 p (16)가 아닌 h (8)가됩니다.
코드 부분은 다음과 같이이다 : 당신은 당신이 기대하고있는 결과를 얻지 못하고있는 이유
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
당신이 'alfabet입니다'의 정의를 추가 할 수 제발, 당신은 사용하는 암호화 알고리즘을 설명 할 수 있습니까? –
이 지금은 모두 알고리즘을 추가 한 및 알파벳 :) –