いけむランド

はてダからやってきました

checksum

ウノウラボ Unoh Labs: MacPorts の使い方と開発方法についてスライド の 50 頁目に checksum の例があるのだが、OpenSSL でもコマンドラインチェックサムを簡単に求められるということを知った。


tarball が改ざんされていないかどうかのチェックに使用される md5sum など checksum を計算するプログラムは coreutils というパッケージに入っている。coreutils では他にもいろんなアルゴリズムのものが提供されている。

% cygcheck -l coreutils | grep 'sum.exe'
/usr/bin/cksum.exe
/usr/bin/md5sum.exe
/usr/bin/sha1sum.exe
/usr/bin/sha224sum.exe
/usr/bin/sha256sum.exe
/usr/bin/sha384sum.exe
/usr/bin/sha512sum.exe
/usr/bin/sum.exe


OpenSSL でもアルゴリズムをサブコマンドで指定すると、*sum と同じように使うことができる。

% echo -n | md5sum
d41d8cd98f00b204e9800998ecf8427e *-
% echo -n | openssl md5
d41d8cd98f00b204e9800998ecf8427e
% echo -n | openssl dgst
d41d8cd98f00b204e9800998ecf8427e


OpenSSL で使えるのは以下のアルゴリズムらしい。

OpenSSL> help
openssl:Error: 'help' is an invalid command.

Standard commands
asn1parse      ca             ciphers        crl            crl2pkcs7      
dgst           dh             dhparam        dsa            dsaparam       
ec             ecparam        enc            engine         errstr         
gendh          gendsa         genrsa         nseq           ocsp           
passwd         pkcs12         pkcs7          pkcs8          prime          
rand           req            rsa            rsautl         s_client       
s_server       s_time         sess_id        smime          speed          
spkac          verify         version        x509           

Message Digest commands (see the `dgst' command for more details)
md2            md4            md5            rmd160         sha            
sha1           

Cipher commands (see the `enc' command for more details)
aes-128-cbc    aes-128-ecb    aes-192-cbc    aes-192-ecb    aes-256-cbc    
aes-256-ecb    base64         bf             bf-cbc         bf-cfb         
bf-ecb         bf-ofb         cast           cast-cbc       cast5-cbc      
cast5-cfb      cast5-ecb      cast5-ofb      des            des-cbc        
des-cfb        des-ecb        des-ede        des-ede-cbc    des-ede-cfb    
des-ede-ofb    des-ede3       des-ede3-cbc   des-ede3-cfb   des-ede3-ofb   
des-ofb        des3           desx           rc2            rc2-40-cbc     
rc2-64-cbc     rc2-cbc        rc2-cfb        rc2-ecb        rc2-ofb        
rc4            rc4-40         


だから、何だと言えばそれまでだが。