我有一个包含二进制加密字符串的char*(使用AES-128这是加密输出).
我需要弄清楚char*中有多少字节(因为AES 128使用16字节的块大小,它应该是16的倍数).确定包含二进制数据的char*大小的最佳方法是什么?Strlen和sizeof似乎没有在这里产生正确的结果(结果不是16的增量).当我在0和一些任意大数字之间循环使用i时,我可以通过简单地执行printf("%d",ptr [i])来遍历字符串的ascii值.
这里有什么想法?
A char*没有为它在C中指向的缓冲区定义的显式大小.它只是char缓冲区中第一个的地址,仅此而已.如果需要缓冲区的大小,请将其传递给单独的变量,如下所示:
void decryptBuffer(char* buffer, size_t n)
注意:sizeof(buffer)只会给你指针的大小,而不是它指向的字节数!