2012-11-14 1 views
-1

이 암호의 알파벳 및 특수 문자에 "ç", "ğ", "ı", "ö"및 "ü" 너무. 어떻게해야합니까?rot13 및 시저 암호화에 문자 및 문자를 추가하는 방법

for (int i = 0; i < metin.length(); i++) { 
     char harf = metin.charAt(i); 
     if  (harf >= 'a' && harf <= 'm') harf += i; 
     else if (harf >= 'A' && harf <= 'M') harf += i; 
     else if (harf >= 'n' && harf <= 'z') harf -= i; 
     else if (harf >= 'N' && harf <= 'Z') harf -= i; 
     System.out.print(harf); 
    } 
+1

이 질문은 자바에 대한 없습니다. 암호를 원하는대로 결정하면 Java 코드가이를 수행하게됩니다. –

+3

그건 황제 나 Rot13이 아니에요. 뒤집을 수 없습니다 ('i == 1''harf == 'k''와 harf == 'n''같은 출력 결과) 그리고 키가 없습니다. 그래서 심지어 암호화되지 않습니다. – CodesInChaos

+0

rot13을 26 자로 사용하면 31 자, 31자를 사용하지 않습니다. – Juvanis

답변

2

전략을 이렇게 일반적으로 만들 수 있습니다.

String text = "abcdefghijklmnopqrstuvwxyz!$%^&*()äöü"; 

for (int i = 0; i < text.length(); i++) { 
    char ch = text.charAt(i); 
    ch--; 
    if (ch % 32 < 13) 
     ch += 13; 
    else if (ch % 32 < 26) 
     ch -= 13; 
    else if (ch % 32 < 29) 
     ch += 3; 
    else 
     ch -= 3; 
    ch++; 
    System.out.print(ch); 
} 

인쇄

nopqrstuvwxyzabcdefghijklm#$%&'()*+,.12[3756ñéÿ 
3

암호를 구현하려면 Java intern char을 int로 사용하고 있습니다. 더 좋은 방법은 String charSet = "abcdefgh.... %&/(öäüô";을 charSet에서 원하는 chars와 함께 사용하는 것입니다.

String charset = "abcdefghijklmnopqrstuvwxyzäöü";  
for (int i = 0; i < metin.length(); i++) { 
    int j = charset.indexOf(metin.charAt(i)); 
    if(j < -1) 
    { 
     //deal with unknown char 
    } 
    if(j == charset.length) 
    { 
     j=0; 
    } 
    System.out.print(charset.charAt(j+1); 
} 

나는 당신이 아이디어를 얻길 바랍니다.

+1

실용적인 용도로는 이것이 비효율적입니다. 훨씬 더 나은 접근 방법은 Peter Lawrey의 [answer] (http://stackoverflow.com/a/13379261/18573)를 참조하십시오. –