In diesem Code, wo ich bin versucht, die entsprechenden Zeichen von zwei Strings xor:Wie xor char in Zeichenfolge und zur Liste hinzufügen?
val s1 = "1c0111001f010100061a024b53535009181c";
val s2 = "686974207468652062756c6c277320657965";
val base64p1 = Base64.getEncoder().encodeToString(new BigInteger(s1, 16).toByteArray())
val base64p2 = Base64.getEncoder().encodeToString(new BigInteger(s2, 16).toByteArray())
val zs : IndexedSeq[(Char, Char)] = base64p1.zip(base64p2);
val xor = zs.foldLeft(List[Char]())((a: List[Char] , b: (Char, Char)) => ((Char)((b._1^b._2))) :: a)
produziert Fehler:
Char.type does not take parameters
[error] val xor = zs.foldLeft(List[Char]())((a: List[Char] , b: (Char, Char)) => ((Char)((b._1^b._2))) :: a)
Wie die entsprechenden Zeichenfolge char Werte XOR- und fügen Sie sie zur Liste?
Warum gehst du zu base64? Ist es nicht in Ordnung, '(BigInt (s1, 16)^BigInt (s2, 16)) zu verwenden? ToString (16) .toList'? Welche Liste oder Zeichenfolge sollte in Ihrem Beispiel das Ergebnis des Xorings sein? – Kolmar
Sie können 'map' anstelle von' foldLeft' verwenden. – talex
@Kolmar hex Dekodierungs 1c0111001f010100061a024b53535009181c und XOR-verknüpft mit 686974207468652062756c6c277320657965 sollte produzieren 746865206b696420646f6e277420706c6179 Referenz: https://cryptopals.com/sets/1/challenges/2 –