summaryrefslogtreecommitdiff
path: root/src/utils/CryptoUtils.scala
blob: 54e5034a8ed7ae82f04b42565302ffea26706256 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
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))
}