[Date Prev][Date Next][Thread Prev][Thread Next]
[Date Index]
[Thread Index]
- Subject: Re: Difference between a+b and bit32.band(a+b)
- From: waspoza <waspoza@...>
- Date: Sat, 10 Sep 2011 01:57:07 +0200
On Fri, Sep 9, 2011 at 6:55 PM, waspoza <waspoza@gmail.com> wrote:
> Yes, this code is probably with errors. It does correct checksums for
> text files, but incorrect for binary files:
> ~/lua$ lua sha256.lua test.jpg -
> 969906c25ee94d6c14aca4edb9b48a1fb350331bd244781d5046699e02d2654c
>
> ~/lua$ sha256sum test.jpg
> fba5916247f503d4792f36af35f1356337e97073ba08b373059e33ab795b035e test.jpg
Ok, I found the bug. Instead:
-- read a file and prints its hash, if given a file name
if arg[1] then
local x = sha2.new256()
for b in io.lines(arg[1], 2^12) do
x:add(b)
end
print(x:close())
end
should be something like this:
if arg[1] then
file = io.open (arg[1] , 'rb')
local x = sha2.new256()
while true do
b = file:read(2^12)
if not b then break end
x:add(b)
end
file:close()
print(x:close())
end
Its uglier, but gives correct checksums.
Looks like io.lines can't read binary files. :(