Calcular o Checksum de um arquivo .bin

classic Classic list List threaded Threaded
6 messages Options
Reply | Threaded
Open this post in threaded view
|

Calcular o Checksum de um arquivo .bin

Ulisses Piassa
Boa tarde galera, tudo blz?

Estou tentando calcular o checksum - muito simples! - de um arquivo .bin usando Lua.

Na mesma lógica usando C, eu usaria algo do tipo: Abrir o arquivo .bin e escrever em um vetor; ler o arquivo.bin e inseri-lo num buffer. Após isso, percorrer cada posição do buffer fazendo uma soma simples, acumulando-a em uma variável.

Alguém poderia me dar uma luz?

Valeu galera!

[]'s

Ulisses

--
Você recebeu essa mensagem porque está inscrito no grupo "Lua BR" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para [hidden email].
Acesse esse grupo em https://groups.google.com/group/lua-br.
Para mais opções, acesse https://groups.google.com/d/optout.
Reply | Threaded
Open this post in threaded view
|

Re: Calcular o Checksum de um arquivo .bin

Luiz Henrique de Figueiredo
> Estou tentando calcular o checksum - muito simples! - de um arquivo .bin
> usando Lua.
>
> Na mesma lógica usando C, eu usaria algo do tipo: Abrir o arquivo .bin e
> escrever em um vetor; ler o arquivo.bin e inseri-lo num buffer. Após isso,
> percorrer cada posição do buffer fazendo uma soma simples, acumulando-a em
> uma variável.
>
> Alguém poderia me dar uma luz?

local f = assert(io.open(filename,"b"))
local sum = 0
while true do
        local c=f:read(1)
        if c==nil then break end
        sum=sum+c:byte()
end
f:close()

mas tem muitas outras checksums melhores:
        https://en.wikipedia.org/wiki/Checksum
        https://en.wikipedia.org/wiki/Cryptographic_hash_function

--
Você está recebendo esta mensagem porque se inscreveu no grupo "Lua BR" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para [hidden email].
Visite este grupo em https://groups.google.com/group/lua-br.
Para obter mais opções, acesse https://groups.google.com/d/optout.
Reply | Threaded
Open this post in threaded view
|

Re: Calcular o Checksum de um arquivo .bin

Denis Dos Santos Silva
In reply to this post by Ulisses Piassa
Luiz, esse calculo funciona mesmo se o arquivo for muito grande, achei um solução interessante!

bem, já que o lua 5.2+ tem suporte a bit/bit32 veja algo no sentido de crc32, 24, 16, ... md5, sha1, ... aí já depende do que tem disponível !

https://github.com/lancelijade/qqwry.lua/blob/master/crc32.lua (pure lua, hash de string, mas, pra um arquivo ...
se você usa o luasec tem muita coisa (binding do openssl) -> https://github.com/brunoos/luasec

[...] 
-- pra ler de um arquivo
hash = func ( io.open('filename', 'rb'):read("*all") );



Em quinta-feira, 8 de dezembro de 2016 17:13:33 UTC-3, Ulisses Piassa escreveu:
Boa tarde galera, tudo blz?

Estou tentando calcular o checksum - muito simples! - de um arquivo .bin usando Lua.

Na mesma lógica usando C, eu usaria algo do tipo: Abrir o arquivo .bin e escrever em um vetor; ler o arquivo.bin e inseri-lo num buffer. Após isso, percorrer cada posição do buffer fazendo uma soma simples, acumulando-a em uma variável.

Alguém poderia me dar uma luz?

Valeu galera!

[]'s

Ulisses

--
Você recebeu essa mensagem porque está inscrito no grupo "Lua BR" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para [hidden email].
Acesse esse grupo em https://groups.google.com/group/lua-br.
Para mais opções, acesse https://groups.google.com/d/optout.
Reply | Threaded
Open this post in threaded view
|

Re: Calcular o Checksum de um arquivo .bin

Denis Dos Santos Silva
In reply to this post by Ulisses Piassa
Luiz, esse calculo funciona mesmo se o arquivo for muito grande? achei um solução interessante!

bem, já que o lua 5.2+ tem suporte a bit/bit32 veja algo no sentido de crc32, 24, 16, ... md5, sha1, ... aí já depende do que tem disponível !

https://github.com/lancelijade/qqwry.lua/blob/master/crc32.lua (pure lua, hash de string, mas, pra um arquivo ...
se você usa o luasec tem muita coisa (binding do openssl) -> https://github.com/brunoos/luasec

[...] 
-- pra ler de um arquivo
hash = func ( io.open('filename', 'rb'):read("*all") );

---
---
---

Em quinta-feira, 8 de dezembro de 2016 17:13:33 UTC-3, Ulisses Piassa escreveu:
Boa tarde galera, tudo blz?

Estou tentando calcular o checksum - muito simples! - de um arquivo .bin usando Lua.

Na mesma lógica usando C, eu usaria algo do tipo: Abrir o arquivo .bin e escrever em um vetor; ler o arquivo.bin e inseri-lo num buffer. Após isso, percorrer cada posição do buffer fazendo uma soma simples, acumulando-a em uma variável.

Alguém poderia me dar uma luz?

Valeu galera!

[]'s

Ulisses

--
Você recebeu essa mensagem porque está inscrito no grupo "Lua BR" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para [hidden email].
Acesse esse grupo em https://groups.google.com/group/lua-br.
Para mais opções, acesse https://groups.google.com/d/optout.
Reply | Threaded
Open this post in threaded view
|

Re: Calcular o Checksum de um arquivo .bin

Denis Dos Santos Silva
In reply to this post by Ulisses Piassa
Luiz, esse calculo funciona mesmo se o arquivo for muito grande? achei um solução interessante!

bem, já que o lua 5.2+ tem suporte a bit/bit32 veja algo no sentido de crc32, 24, 16, ... md5, sha1, ... aí já depende do que tem disponível !

https://github.com/lancelijade/qqwry.lua/blob/master/crc32.lua (pure lua, hash de string, mas, pra um arquivo ...
se você usa o luasec tem muita coisa (binding do openssl) -> https://github.com/brunoos/luasec

[...] 
-- pra ler de um arquivo
hash = func ( io.open('filename', 'rb'):read("*all") );

Em quinta-feira, 8 de dezembro de 2016 17:13:33 UTC-3, Ulisses Piassa escreveu:
Boa tarde galera, tudo blz?

Estou tentando calcular o checksum - muito simples! - de um arquivo .bin usando Lua.

Na mesma lógica usando C, eu usaria algo do tipo: Abrir o arquivo .bin e escrever em um vetor; ler o arquivo.bin e inseri-lo num buffer. Após isso, percorrer cada posição do buffer fazendo uma soma simples, acumulando-a em uma variável.

Alguém poderia me dar uma luz?

Valeu galera!

[]'s

Ulisses

--
Você recebeu essa mensagem porque está inscrito no grupo "Lua BR" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para [hidden email].
Acesse esse grupo em https://groups.google.com/group/lua-br.
Para mais opções, acesse https://groups.google.com/d/optout.
Reply | Threaded
Open this post in threaded view
|

Re: Calcular o Checksum de um arquivo .bin

Ulisses Piassa
Galera, obrigado! Deu certo!

Luiz, essa solução que você mandou funcionou perfeitamente. Só tive que ajustar o parâmetro do io.open(filename) para "rb".

Valeu!! :D

[]'s

Ulisses

2016-12-09 3:28 GMT-02:00 Denis Dos Santos Silva <[hidden email]>:
Luiz, esse calculo funciona mesmo se o arquivo for muito grande? achei um solução interessante!

bem, já que o lua 5.2+ tem suporte a bit/bit32 veja algo no sentido de crc32, 24, 16, ... md5, sha1, ... aí já depende do que tem disponível !

https://github.com/lancelijade/qqwry.lua/blob/master/crc32.lua (pure lua, hash de string, mas, pra um arquivo ...
se você usa o luasec tem muita coisa (binding do openssl) -> https://github.com/brunoos/luasec

[...] 
-- pra ler de um arquivo
hash = func ( io.open('filename', 'rb'):read("*all") );

Em quinta-feira, 8 de dezembro de 2016 17:13:33 UTC-3, Ulisses Piassa escreveu:
Boa tarde galera, tudo blz?

Estou tentando calcular o checksum - muito simples! - de um arquivo .bin usando Lua.

Na mesma lógica usando C, eu usaria algo do tipo: Abrir o arquivo .bin e escrever em um vetor; ler o arquivo.bin e inseri-lo num buffer. Após isso, percorrer cada posição do buffer fazendo uma soma simples, acumulando-a em uma variável.

Alguém poderia me dar uma luz?

Valeu galera!

[]'s

Ulisses

--
Você recebeu essa mensagem porque está inscrito no grupo "Lua BR" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para [hidden email].
Acesse esse grupo em https://groups.google.com/group/lua-br.
Para mais opções, acesse https://groups.google.com/d/optout.

--
Você recebeu essa mensagem porque está inscrito no grupo "Lua BR" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para [hidden email].
Acesse esse grupo em https://groups.google.com/group/lua-br.
Para mais opções, acesse https://groups.google.com/d/optout.