2016-03-23 16 views
1

Küçük bir java RSA Şifreleme görevi yapıyorum ve kendimi sıkışmış buldum.Bir kullanıcı girdisini (tarayıcıdan) alma ve ascii'ye tüm girdiyi dönüştürme

Şu anda bir kullanıcı girdisini alıp hepsini ascii'ye dönüştüren bir stringbuilder kullanıyorum ancak ascii'nin tam karakterini (a = 97) şifrelenecek bir karaktere şifrelenmesi için tüm karakterleri çıkarması gerekiyor. bunun gibi (a = 097).

Bunu nasıl düzeltebiliriz, ya da bunun için daha iyi bir çözüm var mı? Eğer tamsayılar yerine println ait System.out.format kullanmanız gerekir baştaki sıfırları

eklemek için biçimlendirilmiş bir dize yazdırıyor arıyorsun

String Secret; 

Scanner input = new Scanner(System.in); //opens a scanner, keyboard 
System.out.println("Please Enter what you want to encrypt: "); //prompt the user 
Secret = input.next(); //store the input from the user 

String str = Secret; // or anything else 

StringBuilder sb = new StringBuilder();// do 1 character at a time./convert each to ascii one at a time and then, have each2 values equate to 11 digit or "value" 
for (char c : str.toCharArray()) 
sb.append((byte)c);// bit array could be easier as this could make it difficult to decrypt 

    BigInteger m = new BigInteger(sb.toString()); 

System.out.println(m); 

cevap

0

. biçimi aşağıdaki imza

public PrintStream format(Locale l, String format, Object... args) 

Veya, JDK varsayılan kullanarak

public PrintStream format(String format, Object... args) 

Yani böyle bir şey yazabilirsiniz Yerel Ayar ile bir yöntemdir:

int a = 97; 
System.out.format("%03d%n",a); // --> "097" 

Ama aynı zamanda can C Stil printf yöntemini kullanın

System.out.printf("%03d\n",a); // --> "097" 

Bu aşağı yukarı aynı olduğunu yapar:

String aWithLeadingZeros =String.format("%03d",a); 
System.out.println(aWithLeadingZeros); // --> "097" 

Bu sıfır dizeyi lider ile 3 basamaklı her ASCII kodu biçimlendirmek ve StringBuffer

String secret = "hello world!"; // or anything else B) 
StringBuilder sb = new StringBuilder(); 
for (char c : secret.toCharArray()) { 
    // int casting wrap the char value 'c' to the corresponding ASCII code 
    sb.append(String.format("%03d",(int)c));       
} 
System.out.println(sb); // -> 104101108108111032119111114108100033 
// 'H' is 104, 'e' is 101, 'l' is 108, and so on..  
+0

tüm Dize nasıl ekleneceğini olduğunu Bu otomatik olarak girilen karakterleri ne zaman alır ve doğru sayı/sayıları çıkarır mı? – Dusky

+0

Yazdırılabilir her char (ilgili ASCII koduyla) çalışmalıdır –

+0

Sen benim kurtarıcımsın! çok teşekkür ederim (şimdi güzel ve fonksiyonel) :) – Dusky

İlgili konular