     printf("%s", msg);
     for (i = 0; i < 4; i++) {
         for (j = 0; j < 4; j++) {
-            printf("Skey: %d\n", SKey[0][i*4 + j]);
+            printf("Skey: %f\n", SKey[0][i*4 + j]);
         }
     }
     // pad message if not divisible by matrix_dims^2

    strcat(msg, space);
}

void encode_msg(char *msg, int *msg_vector, int matrix_dims) {
    int matrix_size = matrix_dims * matrix_dims;
    int i = 0, j;



    // malloc() for 4 (int*) pointers to 4 rows, also malloc'd (int)
    int z;
    float **SKey = (float **) malloc(matrix_dims * sizeof(float *));
    for (z = 0; z < matrix_dims; z++) {
        SKey[z] = (float *)malloc(matrix_dims * sizeof(float));
    }
    float **invSKey = (float **)malloc(matrix_dims * sizeof(float *));
    for (z = 0; z < matrix_dims; z++) {
        invSKey[z] = (float *)malloc(matrix_dims * sizeof(float));
    }

    int msg_size = strlen(msg);
