GLib で簡単に使用できる MD5/SHA1/etc ルーチンを知っている人はいますか (つまり、GIOChannel などを指定できます)。
Paul Betts
質問する
1520 次
2 に答える
6
よほどの理由がない限り、 glib の組み込み MD5、SHA1、および SHA256 実装を で使用してGChecksum
ください。IO ストリームからチェックサムを構築する組み込み関数はありませんが、単純なものを 10 行で作成できます。いずれにせよ、複雑なものは自分で作成する必要があります。
于 2008-09-22T02:26:08.003 に答える
2
通常、ライブラリの接着剤を自分で作成する必要があります...
void get_channel_md5( GIOChannel* channel, unsigned char output[16] )
{
md5_context ctx;
gint64 fileSize = <get file size somehow?>;
gint64 filePos = 0ll;
gsize bufferSize = g_io_channel_get_buffer_size( channel );
void* buffer = malloc( bufferSize );
md5_starts( &ctx );
// hash buffer at a time:
while ( filePos < fileSize )
{
gint64 size = fileSize - filePos;
if ( size > bufferSize )
size = bufferSize;
g_io_channel_read( channel, buffer );
md5_update( &ctx, buffer, (int)size );
filePos += bufferSize;
}
free( buffer );
md5_finish( &ctx, output );
}
于 2008-09-22T02:19:17.583 に答える