package ixee.cryptopals.utils import ixee.cryptopals.utils.crypto._ import javax.crypto.Cipher import javax.crypto.spec.SecretKeySpec object CryptoUtils { def pkcs7pad(s: Seq[Byte], blockSize: Int): Seq[Byte] = { val padLength = blockSize - (s.length % blockSize) s ++ Stream.continually(padLength.toByte).take(padLength) } def stripPkcs7Pad(s: Seq[Byte]): Seq[Byte] = s.dropRight(s.last) def cbcEncrypt(builder: CbcBuilder)(data: Seq[Byte]) = builder.encrypt.end(data) def cbcDecrypt(builder: CbcBuilder)(data: Seq[Byte]) = stripPkcs7Pad(builder.decrypt.end(data)) }