Day: November 7, 2007

bzlibでbz2ファイルを読み書きしてみる

bz2はメモリを喰うがzlibより圧縮効率がよいらしいので,そのライブラリbzlibを試してみた.bzlib.h圧縮エラーメッセージの取得解凍コンパイルと実行 bzlib.h 圧縮 データをbz2形式圧縮してファイル出力するサンプルを以下に示す. include include include define BZ2_MODE “wb” intmain(int argc, char *argv[]){if (argc != 4){fprintf(stderr, “Usage : %s … More bzlibでbz2ファイルを読み書きしてみる

for文

BASHスクリプトにおけるfor文の書き方for文seq for文 for文の構文を以下に示す.for 変数 in 値(複数可)do文(複数可)donefor文では変数名に値を代入しdoとdoneに囲まれた文を実行する.doneまで来ると,次の値を変数に代入してまたdoとdoneに囲まれた文を実行する.以下に例を示す.for x in a b c d e f gdoecho $x seq

BIOとBase64

BIOはOpenSSLにおけるフレームワークにおける抽象データ型で,暗号化や符号化,ファイルやネットワークといった入出力の詳細をアプリケーションから隠蔽する.で,このフレームワークのもとで実装されているBase64コーデックを試してみた.BIOって何だ?base64エンコードするサンプルbase64デコードするサンプルサンプルの実行 BIOって何だ? BIOはOpenSSLにおける入出力関連のフレームワークにおける抽象データ型である. BIOを使用することにより,アプリケーションでは変更不要なある「お決まりの形式」でプログラミングしつつ,容易にファイル/ネットワークとか,暗号化形式や符号化形式を切替えることができる. さらに,BIOはチェインを組むことができ,例えば暗号化して符号化してネットワークに出力するというBIOのチェイン(このチェイン自信もBIO型となる)を作成して書き出すのも,データをそのままファイルに書き出すのも同様の記述によって表現できるようになる. 上の図はBIOのクラス図である. BIO_f_md,BIO_f_base64,BIO_s_file,BIO_s_connectは実際には関数だが,イメージを掴みやすくするために,上のように記述した. man bioによると,BIOには二種類ある.ソース/シンクBIOソケットBIOとか,ファイルBIOといった,データのソース(源),シンク(宛先)を実装したBIO.フィルターBIO暗号化など,他のBIOからデータを受け取り,別のBIOにデータを渡すフィルターの役割を果たす. フィルターBIOに格納されているデータが変更されるかどうかは,BIOの実装やオペレーションによる. base64エンコードするサンプル では,実際にBIOを使用したプログラミングを試してみる. 今回はbase64でエンコードするサンプルとデコードするサンプルを作成してみる. まずはエンコード. base64デコードするサンプル 次にデコードのサンプルを示す. サンプルの実行

OpenSSLでRSAを試してみる

OpenSSLにはRSAのキーペアを作成し,これを使用して暗号化,復号する機能や,キーをPEM形式で入出力する機能があるのでためしてみた.概要キーペアの作成キーのダンプ出力キーのPEM形式出力エラーメッセージの出力PEM形式キーファイルの読み込み暗号化と復号サンプルの実行 概要 今回は,OpenSSLで以下の作業をする.RSAキーペアの作成RSAは公開鍵方式なので,その公開鍵と秘密鍵を生成する.RSAキーをPEM形式で入出力生成したRSAの公開鍵と秘密鍵をPEM形式でファイルに出力したり,PEM形式のキーデータを読み込んだりする.RSA暗号化と復号RSAキーペアで暗号化と復号を行う.具体的には,キーペアを作成してPEM形式出力するサンプルと,PEM形式キーファイルを読み込んでRSA暗号化,復号を行うサンプルを作成してみた. キーペアの作成 では,キーペアを作成してPEM形式出力するサンプルを以下に示す. キーのダンプ出力 キーのPEM形式出力 エラーメッセージの出力 PEM形式キーファイルの読み込み では,PEM形式キーファイルを読み込んでRSA暗号化,復号を行うサンプルを以下に示す. 暗号化と復号 サンプルの実行