タグ

C言語に関するsnsn9panのブックマーク (2)

  • opensslを用いて、MD5のハッシュ値を求める - s-kita’s blog

    opensslのMD5関数 ハッシュ値を求める #include <openssl/md5.h> unsigned char * MD5(const unsigned char *d, unsigned long n, unsigned char *md); 戻り値:MD5によるハッシュ値へのポインタ d:ハッシュ値を求める元データn:元データdの長さ md:元データdをハッシュした値(16バイトのバイナリデータ) opensslのMD5関数でハッシュ値を求めるサンプル #include <stdio.h> #include <string.h> #include <openssl/md5.h> char * hexdigest(const char *key, int length) { static char hex[32 + 1]; unsigned char digest[16];

    opensslを用いて、MD5のハッシュ値を求める - s-kita’s blog
  • Super Technique 講座~マクロの技

    質的にC言語はトリッキーな言語ではない。だから、トリッキーな技は特定機能に集中する傾向があり、そのような機能とは「マクロ」と「ポインタ」である。 引数展開マクロの小技 DRY原理とプロトタイプ宣言 グローバル変数管理 関数ポインタ配列のプロトタイプ宣言と定義 引数展開マクロの小技 一般論としては、マクロは define 文によって即値定数を記号定数で定義しなおす、というのが真っ当な技であるが、これは今更触れるほどの内容はない。それでも次のようなテクニックはある。 #define swap(type,a,b) {type tmp=a;a=b;b=tmp;} int x = 10; int y = 20; swap( int, x, y ); これは引数展開マクロを使って、いわゆるSWAPを実現する簡単なマクロである。よく類書にこれは「次のように使うと問題がある」とされる。 if( z )

  • 1