用PKCS7填充[C]

时间:2013-06-05 08:25:07

标签: c padding pkcs#7

我想用PKCS7填充:

char *test1 = "azertyuiopqsdfgh";
char *test2 = malloc(32*sizeof(char));

memcpy(test2, test1, strlen(test1));

char pad = (char)(32-strlen(test1));
printf("pad = %d\n", pad);

for(int i = strlen(test1) ; i < 32 ; i++) {
    test2[i] = pad;
}
for (int i = 0 ; i < 32 ; i++)
    printf("%x ", test2[i]);
printf("\n");

我获得:

pad = 16

61 7a 65 72 74 79 75 69 6f 70 71 73 64 66 67 68 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10

但我想:

pad = 16

61 7a 65 72 74 79 75 69 6f 70 71 73 64 66 67 68 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16

如何修改我的代码?

提前致谢。

1 个答案:

答案 0 :(得分:0)

printf("%x ", test2[i]);

您使用十六进制(%x )进行打印,而使用

进行打印
printf("pad = %d\n", pad);` you are printing in decimal (%d). 

(十进制)16 =&gt; (hexa)10 ,所以你正在展示正确的东西。

您可能会打印一下,显示16而不是10,但我认为这不是您要搜索的内容。