我有以下代码:
uint8_t in[BLOCK256], out[32];
bytesread = fread( in, 1, BLOCK256, fp );
然后将in
变量传递给另一个函数。
我试图用文件功能替换读数
使用strcpy(in,argv[1])
将字符串作为参数插入程序。
我得到的结果虽然在这两种情况下有所不同。我不确定是什么问题。
int main( int argc, char **argv )
{
#define BLOCK256 64
FILE *fp;
int i, j, bytesread;
uint8_t in[BLOCK256], out[32];
state256 S;
blake256_test();
for( i = 1; i < argc; ++i )
{
fp = fopen( *( argv + i ), "r" );
if ( fp == NULL )
{
printf( "Error: unable to open %s\n", *( argv + i ) );
return 1;
}
blake256_init( &S );
while( 1 )
{
bytesread = fread( in, 1, BLOCK256, fp );
if ( bytesread )
blake256_update( &S, in, bytesread );
else
break;
}
blake256_final( &S, out );
for( j = 0; j < 32; ++j )
printf( "%02x", out[j] );
fclose( fp );
}
return 0;
}
而不是读取文件的内容,而不是将字符串作为命令行参数传递。
答案 0 :(得分:1)
int main(argc, argv[]){
state256 S;
blake_test();
unsigned char digest[32];
for (i=1; i < argc; i++){
blake256_init(&S);
blake256_update(&S,argv[i], strlen(argv[i]));
blake256_final(&S, digest);
print_digest(digest); /* your print loop as function, with extra newline */
}
return 0;
}
将执行该技巧(散列每个命令行参数字符串)。编写打印功能并添加string.h
标题文件等。
顺便说一句,在任何一种情况下你都不是从stdin读取的。