package ixee.cryptopals.utils.crypto import javax.crypto.spec.SecretKeySpec import javax.crypto.Cipher case class SchemeBuilder(cipherAlgo: String, private val bareKey: Seq[Byte]) { def cipher = Cipher.getInstance(s"$cipherAlgo/ECB/NoPadding") lazy val key = new SecretKeySpec(bareKey.toArray, cipherAlgo) def ecb = EcbBuilder(this) def cbc(iv: Seq[Byte]) = CbcBuilder(this, iv) }