Simple
Sand
Samples
プログラミング言語サンプル集
TOPへ
Hello World!(各言語のTOP)
(テキスト)ファイルのスペースタブ変換
(テキスト)ファイル行数を数える
(テキスト)列挙した数の合計を求める
(バイナリ)ファイル読み込み
(バイナリ)ファイル書き込み
(バイナリ)16進ダンプ
(バイナリ)8進ダンプ
(バイナリ)部分的に16進ダンプ
(ジェネレータ)数列を生成
(ジェネレータ)数列を生成(16進)
(ジェネレータ)オール0バイナリファイル
(ジェネレータ)連続数値バイナリファイル
(ジェネレータ)ランダムバイナリファイル
(正規表現)正規表現を使う
(ファイル)カレントディレクトリ取得
(ファイル)ディレクトリ存在チェック
(ファイル)ディレクトリのファイル一覧
(ESC)エスケープシーケンス
(ESC)コンソール画面クリア
(日付時刻)今日の日付を得る
(日付時刻)現在の時刻を得る
(日付時刻)日付と時刻を得る
(日付時刻)基準日からの連続日付
乱数を使う
MD5(128bit)ハッシュ値を求める
指定時間sleepさせる
シグナル(SIGNAL)を使う
スレッドを使う
(GUI)GUIを使う
(GUI)ボタン
(GUI)テキスト

説明のないとってもシンプルなサンプルプログラム集
COBOL awk C言語 D言語 GO言語 Lua Vim
bash Perl Gauche Clojure CLISP EmacsLisp VimScript
tcsh Ruby Groovy Java C# VBScript JavaScript
Io言語 Python Erlang Scala VB.NET Excel/VBA PHP
Tcl Haskell OCaml PowerShell Windows Unix/Linux

C言語 > MD5(128bit)ハッシュ値を求める

    md5.c

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#include <stdio.h>
#include <string.h>
#include <sys/types.h>
#include <bsd/md5.h>
int main()
{
unsigned char md5[MD5_DIGEST_LENGTH];
unsigned char b[1024];
MD5_CTX ctx;
FILE *f;
size_t n;
int i;
unsigned char src[] = "HELLO";
unsigned char filename[] = "sample.txt";
MD5Init(&ctx);
MD5Update(&ctx,src,strlen(src));
MD5Final(md5,&ctx);
for(i=0;i<MD5_DIGEST_LENGTH;i++)
printf("%02X",md5[i]);
printf("\n");
MD5Init(&ctx);
if((f=fopen(filename,"rb"))==NULL){
printf("ERROR\n");
return 1;
}
while((n=fread(b,sizeof(char),1024,f))>0){
MD5Update(&ctx,b,n);
}
MD5Final(md5,&ctx);
for(i=0;i<MD5_DIGEST_LENGTH;i++)
printf("%02x",md5[i]);
printf("\n");
fclose(f);
}
$ gcc md5.c -lbsd
$ ./a.out
EB61EEAD90E3B899C6BCBE27AC581660
6d0d0bdb0fd1e2d26708b55151f15945
$

  * 確認環境 Debian Linux(Jessie)