【发布时间】:2013-12-11 17:55:34
【问题描述】:
我需要用 C 来实现这个方法(https://en.wikipedia.org/wiki/Padding_%28cryptography%29#PKCS7),它没有方便的函数来实现。
我是这样添加的
int main()
{
FILE *file=fopen("1.xlsx", "a");
file_add(16,file);
fclose(file);
}
void file_add(int SizeOfBlock, FILE *file )
{
fseek(file, 0, SEEK_END);
int size = ftell(file); // file size in bytes
fseek(file, 0, SEEK_SET);
int diff = size%SizeOfBlock;
char arr[16] = "0000000000000000"; //16 zeroes
fwrite(arr, SizeOfBlock-diff, 1 , file); // here I added to end of file missing 0 to make size of file be dividing to SizeOfBlock
}
void file_remove (int SizeOfBlock, FILE *file)
{
// by this function I need to delete these zeroes
// max amount of zeroes is limited by SizeOfBlock
}
我该怎么做? SizeOfBlock 只能是 8 或 16
【问题讨论】:
-
@Rocketq 他的意思是你的代码正在将可打印字符
0(零,ascii 值 48)添加到文件末尾,而不是实际的NUL字符。 -
你想写数字字符的0作为填充吗?
-
@BLUEPIXY 我想是的,为什么不呢?因为毕竟删除这些零并不容易?我在这里描述了为什么我需要这样的代码stackoverflow.com/questions/20504653/…
-
@Rocketq 常量(零)填充仅在您还存储文件的原始长度时才有用。考虑文件内容
00填充到00000000,删除填充时应该在文件末尾删除多少个零? -
我刚刚预测到了,那个文件最后不会是零了,反正没问题,怎么删除呢?我总是可以修改代码并实现其他填充