# Digest.rb

**URL:** <https://www.ruby-forum.com/t/digest-rb/95504>\
**Category:** Development\
**Created:** [June 4, 2006, 10:34am UTC](https://www.ruby-forum.com/t/digest-rb/95504 "2006-06-04T10:34:28Z")\
**Posts on this page:** 9\
**Page:** 1

<div class="post-metadata">

**Author:** ![Tanaka\_A](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/t/c67d28/32.png) [@Tanaka\_A](https://www.ruby-forum.com/u/Tanaka_A)\
**Post date:** [June 4, 2006, 10:34am UTC](https://www.ruby-forum.com/t/digest-rb/95504/1 "2006-06-04T10:34:28Z")

</div>

require ‘digest/sha2’ e$B$Ne(B sha2 e$B$,$I$&$bM\>7W$K;W$($k$N$G!"e(B  
require ‘digest’ e$B$G:Q$`$h$&!“0J2\<$N$h$&$Je(B digest.rb e$B$rIU$1$Fe(B  
e$B$\*$/$H$$$$$N$G$O$J$$$+$H;W$C$?$s$G$9$,!”$I$&$G$7$g$&e(B?

module Digest  
autoload “MD5”, “digest/md5”  
autoload “RMD160”, “digest/rmd160”  
autoload “SHA1”, “digest/sha1”  
autoload “SHA256”, “digest/sha2”  
autoload “SHA384”, “digest/sha2”  
autoload “SHA512”, “digest/sha2”  
end

e$B$J$\*!"e(Bdigest.rb e$B$K$Oe(B Digest::Base.hexdigest\_file  
e$B$J$I$rIU$1e(B  
e$B$k\>l=j$H$7$F$N0UL#$b9M$($F$$$^$9!#e(B

---

<div class="post-metadata">

**Author:** ![Tanaka\_A](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/t/c67d28/32.png) [@Tanaka\_A](https://www.ruby-forum.com/u/Tanaka_A)\
**Post date:** [September 13, 2006, 5:51pm UTC](https://www.ruby-forum.com/t/digest-rb/95504/2 "2006-09-13T17:51:45Z")

</div>

e$B!!5W$7$V$j$KI|5"!#e(B

At Sun, 4 Jun 2006 17:34:00 +0900,  
Tanaka A. wrote:

> autoload “SHA512”, “digest/sha2”  
> end

e$B!!;?@.$G$9!#e(B1.9 e$B$KF~$l$^$7$g$&!#e(B

> e$B$J$\*!"e(Bdigest.rb e$B$K$Oe(B Digest::Base.hexdigest\_file e$B$J$I$rIU$1e(B  
> e$B$k\>l=j$H$7$F$N0UL#$b9M$($F$$$^$9!#e(B

e$B!!$3$l$b$h$/;H$&$N$GM\_$7$$$G$9$h$M!#e(B

e$B!!e(BIO e$B$r\<h$k$b$N$O$=$s$J$K\<{MW$O$J$$$+$J!)e(B

–  
/  
/\_\_ \_\_ [Akinori.org](http://Akinori.org) / [MUSHA.org](http://MUSHA.org)  
/ ) ) ) ) / [FreeBSD.org](http://FreeBSD.org) / [Ruby-lang.org](http://Ruby-lang.org)  
Akinori MUSHA aka / (\_ / ( (\_\_( @ [iDaemons.org](http://iDaemons.org) / and.or.jp

“Different eyes see different things,  
Different hearts beat on different strings –  
But there are times for you and me when all such things agree”

---

<div class="post-metadata">

**Author:** ![Tanaka\_A](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/t/c67d28/32.png) [@Tanaka\_A](https://www.ruby-forum.com/u/Tanaka_A)\
**Post date:** [September 13, 2006, 6:31pm UTC](https://www.ruby-forum.com/t/digest-rb/95504/3 "2006-09-13T18:31:51Z")

</div>

In article [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid),  
“Akinori MUSHA” [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) writes:

> e$B!!;?@.$G$9!#e(B1.9 e$B$KF~$l$^$7$g$&!#e(B

e$B$$$l$^$7$?!#e(B

> > e$B$J$\*!"e(Bdigest.rb e$B$K$Oe(B Digest::Base.hexdigest\_file e$B$J$I$rIU$1e(B  
> > e$B$k\>l=j$H$7$F$N0UL#$b9M$($F$$$^$9!#e(B
> 
> e$B!!$3$l$b$h$/;H$&$N$GM\_$7$$$G$9$h$M!#e(B

e$B$O$$!#e(B

e$B$3$l$K$D$$$F$O$$$m$$$m$H9M$($?7k2L!“e(BAPI e$B$O%^%K%e%”%k$K:$C$Fe(B  
e$B$$$ke(B Digest::Base.open e$B$,$@$$$?$$$$$$$H;W$&$N$G$9$,!"e(Bclose  
e$B$HBP$K$J$i$J$$e(B open e$B$O$A$g$C$H$J$s$J$N$G!“e(Bfile  
e$B$H$$$&L\>A0$Ke(B  
e$B$7$F!”$3$s$J46$8$G$I$&$+$H;W$$$^$9!#e(B

# Index: ext/digest/lib/digest.rb

RCS file: /src/ruby/ext/digest/lib/digest.rb,v  
retrieving revision 1.1  
diff -u -p -r1.1 digest.rb  
— ext/digest/lib/digest.rb 13 Sep 2006 16:03:23 -0000 1.1  
+++ ext/digest/lib/digest.rb 13 Sep 2006 16:20:37 -0000  
@@ -5,4 +5,17 @@ module Digest  
autoload “SHA256”, “digest/sha2”  
autoload “SHA384”, “digest/sha2”  
autoload “SHA512”, “digest/sha2”  
+

- class Base
- def self.file(name)
- 

```
 digest = self.new

```

- 

```
 open(name) {|f|

```

- 

```
   buf = ""

```

- 

```
   while f.read(16384, buf)

```

- 

```
     digest.update buf

```

- 

```
   end

```

- 

```
 }

```

- 

```
 digest

```

- end
- end  
end

# e$B$J$_e(B RubyKaigi2006 e$B$NH/I=;qNA$N:G8e$K$b$3$l$rA_$s$@M}M3$,e(B

# e$B$$$/$i$+=q$$$F$"$j$^$9!#e(B

> e$B!!e(BIO e$B$r\<h$k$b$N$O$=$s$J$K\<{MW$O$J$$$+$J!)e(B

[ruby-talk:116637] e$B$K$=$&$$$&Ds0F$,$"$j$^$9$,!"MQES$H$7$F$"e(B  
e$B$2$i$l$F$$$k$N$O7k6I%U%!%$%k$rFI$`$H$$$&OC$J$s$G$9$h$M$'!#e(B

e$B%U%!%$%k0J30$Ne(B IO  
e$B$@$H!“FI$`$H$J$/$J$C$A$c$&$+$b$7$l$J$$$N$G!“e(B  
e$B$=$&$9$k$H%G!\<%?$=$N$b$N$O$$$i$J$$$s$@$1$Ie(B digest e$B$OM\_$7$$$He(B  
e$B$$$&MQES$K$J$j$^$9$,!”$=$l$C$F$5$9$,$K$h$/$”$k$H$O8@$$$,$?$$e(B  
e$B$h$&$J!#e(B

e$B$H$j$"$($:!“0lHVBg$-$J\<{MW$O%U%!%$%k$rFI$`$H$$$&OC$J$N$G!”\<!e(B  
e$B$KBg$-$J\<{MW$K$D$$$F9M$($k$N$O$7$P$i$/;H$C$F$+$i$G$$$$$s$8$ce(B  
e$B$J$$$G$9$+$M!#e(B

---

<div class="post-metadata">

**Author:** ![Tanaka\_A](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/t/c67d28/32.png) [@Tanaka\_A](https://www.ruby-forum.com/u/Tanaka_A)\
**Post date:** [September 13, 2006, 10:58pm UTC](https://www.ruby-forum.com/t/digest-rb/95504/4 "2006-09-13T22:58:30Z")

</div>

At Thu, 14 Sep 2006 01:31:18 +0900,  
Tanaka A. wrote:

> In article [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid),  
> “Akinori MUSHA” [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) writes:
> 
> > e$B!!;?@.$G$9!#e(B1.9 e$B$KF~$l$^$7$g$&!#e(B
> 
> e$B$$$l$^$7$?!#e(B

e$B!!$U$H8+$l$P!"e(B md5.rb e$B$He(B sha1.rb  
e$B$,$^$@;D$C$F$$$^$7$?!#e(B

e$B!!e(B1.9 e$B$Ge(BDigest  
e$B$N;H$$\>!\<j$,JQ$o$k$3$H$G$9$7!“$3$N%?%$%\_%s%0$Ge(B  
(1.9 e$B$+$i$Oe(B)e$B\>C$7$F$9$C$-$j$7$?$$$N$G$9$,!”$I$&$G$7$g$&$+!#e(B

> e$B$3$l$K$D$$$F$O$$$m$$$m$H9M$($?7k2L!“e(BAPI e$B$O%^%K%e%”%k$K:$C$Fe(B  
> e$B$$$ke(B Digest::Base.open e$B$,$@$$$?$$$$$$$H;W$&$N$G$9$,!"e(Bclose  
> e$B$HBP$K$J$i$J$$e(B open e$B$O$A$g$C$H$J$s$J$N$G!“e(Bfile e$B$H$$$&L\>A0$Ke(B  
> e$B$7$F!”$3$s$J46$8$G$I$&$+$H;W$$$^$9!#e(B

e$B!!e(BFile.open() e$B$+$ie(B open()  
e$B$K$7$?$N$O!“e(BURIe$B$d%Q%$%W$b\<u$1F~$l$ke(B  
e$B0U?^$G$7$g$&$+!#e(Bfile()  
e$B$H$$$&L\>A0$J$i$P!”%U%!%$%kL\>0J30$rEO$9e(B  
e$B;H$$J}$r$5$l$k$3$H$K$O0cOB46$r3P$($^$9!#e(B

> # e$B$J$_e(B RubyKaigi2006 e$B$NH/I=;qNA$N:G8e$K$b$3$l$rA_$s$@M}M3$,e(B
> 
> # e$B$$$/$i$+=q$$$F$"$j$^$9!#e(B

e$B!!%A%'%C%/$7$^$7$?!#;qNA$H2;@\<$,$9$Y$FB7$C$F$$$F3Z$7$a$^$7$?!#e(B

> e$B$H$j$"$($:!“0lHVBg$-$J\<{MW$O%U%!%$%k$rFI$`$H$$$&OC$J$N$G!”\<!e(B  
> e$B$KBg$-$J\<{MW$K$D$$$F9M$($k$N$O$7$P$i$/;H$C$F$+$i$G$$$$$s$8$ce(B  
> e$B$J$$$G$9$+$M!#e(B

e$B!!$O$$!"$=$&;W$$$^$9!#e(B

e$B!!\>e$N%a%=%C%IL\>$N7o$Ge(B read()  
e$B$H$$$&$N$r;W$$$D$-!"$=$NL\>A0$+$ie(B  
e$B5U;;$7$F%U%!%$%kL\>$^$?$Oe(B IO  
e$B$r\<h$k;EMM$O$I$&$+$H;W$C$?$N$G$9$,!“e(B  
e$B6D$kDL$j!”;H$$$?$$%7!\<%s$,$J$+$J$+;W$$Ib$+$P$J$$$N$GJ]N1$7$^$9!#e(B

e$B!!e(Bopen() e$B$N0z?t$K$J$k$b$N0lHL$de(B IO  
e$B$r0z?t$K\<h$k%a%=%C%I$,I,MW$He(B  
e$B$J$C$?$i!"L\>A0$H$H$b$K$^$?9M$($k$3$H$K$7$^$7$g$&!#e(B

–  
/  
/\_\_ \_\_ [Akinori.org](http://Akinori.org) / [MUSHA.org](http://MUSHA.org)  
/ ) ) ) ) / [FreeBSD.org](http://FreeBSD.org) / [Ruby-lang.org](http://Ruby-lang.org)  
Akinori MUSHA aka / (\_ / ( (\_\_( @ [iDaemons.org](http://iDaemons.org) / and.or.jp

“Different eyes see different things,  
Different hearts beat on different strings –  
But there are times for you and me when all such things agree”

---

<div class="post-metadata">

**Author:** ![Tanaka\_A](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/t/c67d28/32.png) [@Tanaka\_A](https://www.ruby-forum.com/u/Tanaka_A)\
**Post date:** [September 14, 2006, 1:58am UTC](https://www.ruby-forum.com/t/digest-rb/95504/5 "2006-09-14T01:58:50Z")

</div>

In article [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid),  
“Akinori MUSHA” [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) writes:

> e$B!!$U$H8+$l$P!"e(B md5.rb e$B$He(B sha1.rb e$B$,$^$@;D$C$F$$$^$7$?!#e(B
> 
> e$B!!e(B1.9 e$B$Ge(BDigest e$B$N;H$$\>!\<j$,JQ$o$k$3$H$G$9$7!“$3$N%?%$%\_%s%0$Ge(B  
> (1.9 e$B$+$i$Oe(B)e$B\>C$7$F$9$C$-$j$7$?$$$N$G$9$,!”$I$&$G$7$g$&$+!#e(B

e$B4pK\E\*$K;?@.$G$O$“$k$N$G$9$,!”;H$$\>!\<j$,0-$/$J$ke(B (featuree$BL\>e(B  
e$B$,D9$/$J$ke(B) e$BJ}8~$NJQ99$J$N$G!"5$$KF~$i$J$$?M$b$$$=$&$G$9$M!#e(B

> e$B!!e(BFile.open() e$B$+$ie(B open() e$B$K$7$?$N$O!“e(BURIe$B$d%Q%$%W$b\<u$1F~$l$ke(B  
> e$B0U?^$G$7$g$&$+!#e(Bfile() e$B$H$$$&L\>A0$J$i$P!”%U%!%$%kL\>0J30$rEO$9e(B  
> e$B;H$$J}$r$5$l$k$3$H$K$O0cOB46$r3P$($^$9!#e(B

e$B$O$$!#e(BURI e$B$O9MN8$7$F$$$^$7$?!#%Q%$%W$OE,@Z$JMQK!$,;W$$IU$+$Je(B  
e$B$$$N$G$"$s$^$j9M$($F$^$;$s!#e(B

e$B0cOB46$,$"$k$H$$$&$N$O$o$+$j$^$9!#e(B

> e$B!!\>e$N%a%=%C%IL\>$N7o$Ge(B read() e$B$H$$$&$N$r;W$$$D$-!"$=$NL\>A0$+$ie(B  
> e$B5U;;$7$F%U%!%$%kL\>$^$?$Oe(B IO e$B$r\<h$k;EMM$O$I$&$+$H;W$C$?$N$G$9$,!“e(B  
> e$B6D$kDL$j!”;H$$$?$$%7!\<%s$,$J$+$J$+;W$$Ib$+$P$J$$$N$GJ]N1$7$^$9!#e(B
> 
> e$B!!e(Bopen() e$B$N0z?t$K$J$k$b$N0lHL$de(B IO e$B$r0z?t$K\<h$k%a%=%C%I$,I,MW$He(B  
> e$B$J$C$?$i!"L\>A0$H$H$b$K$^$?9M$($k$3$H$K$7$^$7$g$&!#e(B

e$B$H$9$k$H!"e(BFile.open e$B$KLa$7$F$3$s$J$+$s$8$G$7$g$&$+!#e(B

# Index: ext/digest/lib/digest.rb

RCS file: /src/ruby/ext/digest/lib/digest.rb,v  
retrieving revision 1.1  
diff -u -p -r1.1 digest.rb  
— ext/digest/lib/digest.rb 13 Sep 2006 16:03:23 -0000 1.1  
+++ ext/digest/lib/digest.rb 13 Sep 2006 23:41:36 -0000  
@@ -5,4 +5,17 @@ module Digest  
autoload “SHA256”, “digest/sha2”  
autoload “SHA384”, “digest/sha2”  
autoload “SHA512”, “digest/sha2”  
+

- class Base
- def self.file(name)
- 

```
 digest = self.new

```

- 

```
 File.open(name) {|f|

```

- 

```
   buf = ""

```

- 

```
   while f.read(16384, buf)

```

- 

```
     digest.update buf

```

- 

```
   end

```

- 

```
 }

```

- 

```
 digest

```

- end
- end  
end

---

<div class="post-metadata">

**Author:** ![Tanaka\_A](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/t/c67d28/32.png) [@Tanaka\_A](https://www.ruby-forum.com/u/Tanaka_A)\
**Post date:** [September 14, 2006, 7:46am UTC](https://www.ruby-forum.com/t/digest-rb/95504/6 "2006-09-14T07:46:09Z")

</div>

In article [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid),  
“Akinori MUSHA” [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) writes:

> e$B!!e(BRuby e$B$N3+H/%Z!\<%9$r$\_$k$H!"\>e0L8\_49@-$OFs7ONsJ]$F$P==J,$+$Je(B  
> e$B$H$$$&8+J}$r$7$F$$$^$9!#:#e(B 1.4 e$B$H$N8\_49@-$r9M$($kI,MW@-$O8B$je(B  
> e$B$J$/Gv$$$H;W$$$^$9$7!#e(B
> 
> e$B!!\>/$7MM;R$r8+$F7h$a$^$9!#e(B

e$B;W$$IU$$$?$N$G$9$,!“e(BMD5 e$B$He(B SHA1  
e$B$r;H$$$d$9$$$H$3$m$K$\*$$$F$\*e(B  
e$B$/$N$O$b$O$d320-$G$”$k!"$H$$$&M}M3$N\<gD%$O2DG=$+$b$7$l$^$;$s!#e(B

e$B%3%j%8%g%s$NOC$,=P$F$$$^$9$+$i!"%;%-%e%j%F%#E\*$JOC$H$7$F$\*A&e(B  
e$B$a$GL5$$$N$O3N$+$G$9$h$M!#e(B

> > e$B$H$9$k$H!"e(BFile.open e$B$KLa$7$F$3$s$J$+$s$8$G$7$g$&$+!#e(B
> 
> e$B!!$3$l$G$\*4j$$$7$^$9!#e(B

e$BF~$l$^$7$?!#e(B

---

<div class="post-metadata">

**Author:** ![Tanaka\_A](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/t/c67d28/32.png) [@Tanaka\_A](https://www.ruby-forum.com/u/Tanaka_A)\
**Post date:** [September 14, 2006, 6:15pm UTC](https://www.ruby-forum.com/t/digest-rb/95504/7 "2006-09-14T18:15:21Z")

</div>

e$B@\>;3OB9-$G$9!#e(B

> > > > > On Thu, 14 Sep 2006 08:57:29 +0900  
> > > > > removed\_email\_address@domain.invalid(Tanaka A.) said:
> 
> - 
> 
> ```
> File.open(name) {|f|
> 
> ```

e$B%P%$%J%j%b!\<%I$K$7$?J}$,NI$$$N$G$O$J$$$G$7$g$&$+e(B?

---

<div class="post-metadata">

**Author:** ![Tanaka\_A](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/t/c67d28/32.png) [@Tanaka\_A](https://www.ruby-forum.com/u/Tanaka_A)\
**Post date:** [September 14, 2006, 6:16pm UTC](https://www.ruby-forum.com/t/digest-rb/95504/8 "2006-09-14T18:16:54Z")

</div>

In article [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid),  
Kazuhiro NISHIYAMA [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) writes:

> e$B%P%$%J%j%b!\<%I$K$7$?J}$,NI$$$N$G$O$J$$$G$7$g$&$+e(B?

e$B$J$k$[$I!#$=$l$O$?$7$+$K!#e(B

---

<div class="post-metadata">

**Author:** ![Tanaka\_A](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/t/c67d28/32.png) [@Tanaka\_A](https://www.ruby-forum.com/u/Tanaka_A)\
**Post date:** [September 14, 2006, 7:38am UTC](https://www.ruby-forum.com/t/digest-rb/95504/9 "2006-09-14T07:38:08Z")

</div>

At Thu, 14 Sep 2006 08:57:29 +0900,  
Tanaka A. wrote:

> In article [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid),  
> “Akinori MUSHA” [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) writes:
> 
> > e$B!!$U$H8+$l$P!"e(B md5.rb e$B$He(B sha1.rb e$B$,$^$@;D$C$F$$$^$7$?!#e(B
> > 
> > e$B!!e(B1.9 e$B$Ge(BDigest e$B$N;H$$\>!\<j$,JQ$o$k$3$H$G$9$7!“$3$N%?%$%\_%s%0$Ge(B  
> > (1.9 e$B$+$i$Oe(B)e$B\>C$7$F$9$C$-$j$7$?$$$N$G$9$,!”$I$&$G$7$g$&$+!#e(B
> 
> e$B4pK\E\*$K;?@.$G$O$“$k$N$G$9$,!”;H$$\>!\<j$,0-$/$J$ke(B (featuree$BL\>e(B  
> e$B$,D9$/$J$ke(B) e$BJ}8~$NJQ99$J$N$G!"5$$KF~$i$J$$?M$b$$$=$&$G$9$M!#e(B

e$B!!e(BRuby  
e$B$N3+H/%Z!\<%9$r$\_$k$H!"\>e0L8\_49@-$OFs7ONsJ]$F$P==J,$+$Je(B  
e$B$H$$$&8+J}$r$7$F$$$^$9!#:#e(B 1.4  
e$B$H$N8\_49@-$r9M$($kI,MW@-$O8B$je(B  
e$B$J$/Gv$$$H;W$$$^$9$7!#e(B

e$B!!\>/$7MM;R$r8+$F7h$a$^$9!#e(B

> > e$B!!e(Bopen() e$B$N0z?t$K$J$k$b$N0lHL$de(B IO e$B$r0z?t$K\<h$k%a%=%C%I$,I,MW$He(B  
> > e$B$J$C$?$i!"L\>A0$H$H$b$K$^$?9M$($k$3$H$K$7$^$7$g$&!#e(B
> 
> e$B$H$9$k$H!"e(BFile.open e$B$KLa$7$F$3$s$J$+$s$8$G$7$g$&$+!#e(B

e$B!!$3$l$G$\*4j$$$7$^$9!#e(B

–  
/  
/\_\_ \_\_ [Akinori.org](http://Akinori.org) / [MUSHA.org](http://MUSHA.org)  
/ ) ) ) ) / [FreeBSD.org](http://FreeBSD.org) / [Ruby-lang.org](http://Ruby-lang.org)  
Akinori MUSHA aka / (\_ / ( (\_\_( @ [iDaemons.org](http://iDaemons.org) / and.or.jp

“Different eyes see different things,  
Different hearts beat on different strings –  
But there are times for you and me when all such things agree”
