[Tokyo.pm] md5 "8"liner

WATANABE Hirofumi Hirofumi.Watanabe @ jp.sony.com
2000年 11月 16日 (木) 19:30:10 CST


わたなべです.

hiroyuki oyama <oyama @ crayfish.co.jp> writes:

:ただ、このまま使用を試みると、
:  Can't emulate -~ on #! line at ./MD5 line 1.
:
:等とおこられます。(v5.6.0 built for sun4-solaris)
:しかし行頭の
:  ~JLA

John Allen のイニシャル? L は middle name かな.

:#!/bin/perl -iH9T4C`>_-JXF8NMS^$#)4=@<,$18%"0X4!`L0%P8*#Q4``04``04#!P``
:@A=unpack N4C24,unpack u,$^I;@K=map{int abs 2**32*sin$_}1..64;sub L{($x=pop)
:<<($n=pop)|2**$n-1&$x>>32-$n}sub M{($x=pop)-($m=1+~0)*int$x/$m}do{$l+=$r=read
:STDIN,$_,64;$r++,$_.="\x80"if$r<64&&!$p++;@W=unpack V16,$_."\0"x7;$W[14]=$l*8
:if$r<57;($a,$b,$c,$d)=@A;for(0..63){$a=M$b+L$A[4+4*($_>>4)+$_%4],M&{(sub{$b&$c
:|$d&~$b},sub{$b&$d|$c&~$d},sub{$b^$c^$d},sub{$c^($b|~$d)})[$z=$_/16]}+$W[($A[
:20+$z]+$A[24+$z]*($_%16))%16]+$K[$_]+$a;($a,$b,$c,$d)=($d,$a,$b,$c)}$v=a;for(
:@A[0..3]){$_=M$_+${$v++}}}while$r>56;print unpack H32,pack V4, @ A # RSA's MD5
:
:
:行頭の記述は何の為の物なんでしょう?

-i はふつう backup copy の名前の一部に使われるけど, むりやり 
$^I を変数にしてその初期化のために使ってるというか(STDIN だ
から rename されないし, print は STDOUT にされる),
#! line も効率良く使って行を稼いでるというか, うーむ, なるほど.

-- 
わたなべひろふみ



Tokyo-pm メーリングリストの案内