01. april 2003 - 10:00
Der er
10 kommentarer og 1 løsning
Rykke antal tegn i alfabtet
Hey eksperter Jeg er ved at lave noget kryptering, og vil gerne have hjælp til at rykke hvert tegn i en streng fx 5 "felter" hen. Så "hej" fx bliver til "mjo" /Bjarke
Annonceindlæg tema
Forsvar & beredskab
Cybersikkerhed, realtidsdata og robuste it-systemer er blevet fundamentet for moderne forsvar.
01. april 2003 - 10:04
#1
Du kan godt sige: char test = 'a'; test = test + 5; System.out.println(test);
01. april 2003 - 10:05
#2
Du skal så bare passe på når du kommer hen til enden af alfabetet - så skal du jo wrappe rundt og starte med 'a'.
01. april 2003 - 10:05
#3
Brug StringBuffer og setCharAt !
01. april 2003 - 10:06
#4
ja netop, det er der problemet kommer... når jeg kommer til enden af alphabetet + andet (ialt 255 tegn).
01. april 2003 - 10:07
#5
lav en modulos på tallet. char test = 'a'; test = test + 5; test%=255; så er den wrappet rundt, måske skal der typecastes lidt.
01. april 2003 - 10:09
#6
public class Caesar { public static void main(String[] args) { String s = "hej"; String s2 = encrypt(s); System.out.println(s2); } public static String encrypt(String s) { StringBuffer sb = new StringBuffer(s); for(int i = 0; i < sb.length(); i++) { sb.setCharAt(i, (char)(sb.charAt(i) + 5)); } return sb.toString(); } }
01. april 2003 - 10:11
#7
Og hvis du skal håndtere wrap around: public class Caesar { public static void main(String[] args) { String s = "hej"; String s2 = encrypt(s); System.out.println(s2); } public static String encrypt(String s) { StringBuffer sb = new StringBuffer(s); for(int i = 0; i < sb.length(); i++) { sb.setCharAt(i, (char)(byte)(sb.charAt(i) + 5)); } return sb.toString(); } }
01. april 2003 - 10:12
#8
Og husk at som kryptering er algoritmen ikke meget værd ! :-)
01. april 2003 - 10:16
#9
ok, jeg vil lige tænke lidt over det... arne_v >> heh.. narj, men jeg konvereterer også bogstaverne til int :O)
01. april 2003 - 10:23
#10
Begge veje: public class Caesar { public static void main(String[] args) { String s = "hej"; System.out.println(encrypt(s)); System.out.println(decrypt(s)); System.out.println(decrypt(encrypt(s))); System.out.println(encrypt(decrypt(s))); } public static String encrypt(String s) { StringBuffer sb = new StringBuffer(s); for(int i = 0; i < sb.length(); i++) { sb.setCharAt(i, (char)(byte)(sb.charAt(i) + 5)); } return sb.toString(); } public static String decrypt(String s) { StringBuffer sb = new StringBuffer(s); for(int i = 0; i < sb.length(); i++) { sb.setCharAt(i, (char)(byte)(sb.charAt(i) - 5)); } return sb.toString(); } }
11. april 2003 - 00:15
#11
tak arne_v.... det virker perfekt!
Kurser inden for grundlæggende programmering