 
     // malloc() for 4 (int*) pointers to 4 rows, also malloc'd (int)
     int z;
-    int **SKey = (int **) malloc(matrix_dims * sizeof(int *));
+    float **SKey = (float **) malloc(matrix_dims * sizeof(float *));
     for (z = 0; z < matrix_dims; z++) {
-        SKey[z] = (int *)malloc(matrix_dims * sizeof(int));
-    }
-    int **invSKey = (int **)malloc(matrix_dims * sizeof(int *));
+        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] = (int *)malloc(matrix_dims * sizeof(int));
+        invSKey[z] = (float *)malloc(matrix_dims * sizeof(float));
     }
 
     int msg_size = strlen(msg);

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

    strcat(msg, space);
}

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

