cryptopals

Cryptopals Challenges
git clone https://git.pngu.org/cryptopals
Log | Files | Refs

blocks.c (935B)


#include "blocks.h"

int block_transpose(const unsigned char *str, const int str_len,
                    const int num_blocks, unsigned char ***blocks) {
  int block_len = str_len / num_blocks;
  *blocks = (unsigned char **)malloc(num_blocks * sizeof(char *));
  for (int i = 0; i < num_blocks; i++) {
    (*blocks)[i] = (unsigned char *)malloc(block_len * sizeof(char));
    for (int j = 0; j < block_len; j++)
      (*blocks)[i][j] = str[i + j * num_blocks];
  }
  return block_len;
}

int chunk(const unsigned char *str, const int str_len, const int block_len,
          unsigned char ***blocks) {
  int num_blocks = str_len / block_len;
  *blocks = (unsigned char **)malloc(num_blocks * sizeof(char *));
  for (int i = 0; i < num_blocks; i++) {
    (*blocks)[i] = (unsigned char *)malloc(block_len * sizeof(char));
    for (int j = 0; j < block_len; j++)
      (*blocks)[i][j] = str[i * block_len + j];
  }
  return num_blocks;
}