How to XOR byte arrays in Scala

1 Answer

0 votes
object XORBytesDemo {

  def xorBytes(a: Array[Byte], b: Array[Byte]): Array[Byte] = {
    (a zip b).map { case (x, y) => (x ^ y).toByte }
  }

  def printBitsetArray(label: String, array: Array[Byte]): Unit = {
    print(s"$label: ")
    array.foreach { b =>
      val binary = (b & 0xFF).toBinaryString.reverse.padTo(8, '0').reverse
      print(s"$binary ")
    }    
    println()
  }

  def main(args: Array[String]): Unit = {
    val a = "Aragorn".getBytes("US-ASCII")
    val b = "Boromir".getBytes("US-ASCII")
    val c = xorBytes(a, b)

    printBitsetArray("a", a)
    printBitsetArray("b", b)
    printBitsetArray("c", c)

    print("c: ")
    c.foreach(b => print(s"${b & 0xFF} "))
  }
}
 
 
  
/*
run:
 
a: 01000001 01110010 01100001 01100111 01101111 01110010 01101110 
b: 01000010 01101111 01110010 01101111 01101101 01101001 01110010 
c: 00000011 00011101 00010011 00001000 00000010 00011011 00011100 
c: 3 29 19 8 2 27 28 
 
*/

 



answered Jul 12, 2025 by avibootz

Related questions

1 answer 80 views
80 views asked Jul 11, 2025 by avibootz
1 answer 87 views
87 views asked Jul 12, 2025 by avibootz
1 answer 104 views
1 answer 88 views
88 views asked Jul 12, 2025 by avibootz
1 answer 94 views
94 views asked Jul 12, 2025 by avibootz
1 answer 102 views
...