demyz0r Posted October 18, 2016 at 10:07 AM Report #599681 Posted October 18, 2016 at 10:07 AM Boas pessoal, eu tenho um programa em JAVA que pego num zip e envio para o servidor via http, e quero fazer uma verificação MD5 ou SHA1 do lado do servidor, mas o ficheiro nunca chega lá com o mesmo MD5 ou SHA1 que foi enviado da máquina, é normal que haja alguma alteração do ficheiro pelo caminho?
HappyHippyHippo Posted October 18, 2016 at 10:12 AM Report #599682 Posted October 18, 2016 at 10:12 AM 3 minutes ago, demyz0r said: é normal que haja alguma alteração do ficheiro pelo caminho? não IRC : sim, é algo que ainda existe >> #p@p Portugol Plus
demyz0r Posted October 18, 2016 at 11:23 AM Author Report #599684 Posted October 18, 2016 at 11:23 AM O tamanho dos ficheiros são os mesmos, mas o MD5 no meu java, e depois no php do meu servidor não. O que me faz acreditar que foi feita alguma alteração, durante o "post".
Knitter Posted October 18, 2016 at 11:57 AM Report #599685 Posted October 18, 2016 at 11:57 AM Pode ser uma diferença nas duas implementações ou, mais simples, estarem a usar dados diferentes para fazerem o cálculo. Se estiveres a fazer o hash com o conteúdo do ficheiro, então têm de ser os dois iguais.
jota.fullstack Posted October 18, 2016 at 01:47 PM Report #599686 Posted October 18, 2016 at 01:47 PM Boas demyz0r, tenta usar isto http://onlinemd5.com/ e verifica qual dos códigos está a calcular mal o md5 ou sha1. 1 Report
demyz0r Posted October 18, 2016 at 02:51 PM Author Report #599692 Posted October 18, 2016 at 02:51 PM (edited) Boas jota.fullstack, obrigado pelo link Reparei agora, há uma alteração embora que muito pequena no tamanho do ficheiro. Um 9,615,493 Bytes e o outro 9,615,451 Bytes. Mas a única diferença é que o maior apesar de ser igual ao mais pequeno, ele já foi enviado para o servidor via HTTP. Não percebo porquê a alteração de bytes, apenas com um envio. Edited October 18, 2016 at 02:52 PM by demyz0r
HappyHippyHippo Posted October 18, 2016 at 02:53 PM Report #599693 Posted October 18, 2016 at 02:53 PM tens a certeza que são iguais ? qual o teu SO e qual o SO do servidor ? IRC : sim, é algo que ainda existe >> #p@p Portugol Plus
demyz0r Posted October 18, 2016 at 03:04 PM Author Report #599695 Posted October 18, 2016 at 03:04 PM (edited) Eles não são iguais HappyHippyHippo, como disse no comentário anterior, eles diferem em bytes, embora que seja uma diferença muito pequena, no entanto chega para ver que o ficheiro não é igual ao outro, o que muda o MD5, e depois não consiga receber no servidor, porque faço a comparação dos MD5 para verificar se o ficheiro não foi alterado (com virus, etc). No PC tenho o Windows 10, no servidor é um Windows server 2012 R2, isso poderá afectar? Edited October 18, 2016 at 03:09 PM by demyz0r
jota.fullstack Posted October 18, 2016 at 03:14 PM Report #599696 Posted October 18, 2016 at 03:14 PM 20 minutes ago, demyz0r said: Boas jota.fullstack, obrigado pelo link De nada 🙂 21 minutes ago, demyz0r said: Reparei agora, há uma alteração embora que muito pequena no tamanho do ficheiro. Um 9,615,493 Bytes e o outro 9,615,451 Bytes. Mas a única diferença é que o maior apesar de ser igual ao mais pequeno, ele já foi enviado para o servidor via HTTP. Não percebo porquê a alteração de bytes, apenas com um envio. Será que não estás a adicionar nenhum header quando envias por http? Consegues adicionar aqui o trecho de código do envio? 1 Report
jota.fullstack Posted October 18, 2016 at 03:15 PM Report #599697 Posted October 18, 2016 at 03:15 PM 10 minutes ago, demyz0r said: No PC tenho o Windows 10, no servidor é um Windows server 2012 R2, isso poderá afectar? Não afecta, para mim é como envias, deves estar mesmo a adicionar algum header ao ficheiro. 1 Report
demyz0r Posted October 18, 2016 at 03:18 PM Author Report #599698 Posted October 18, 2016 at 03:18 PM Sim por acaso envio o header, mas não fazia ideia que isso alterava o tamanho do ficheiro. Eu poder posso, mas o codigo é VBA, so meti na parte do JAVA, porque como era uma pergunta generalista, e há mais pessoal a saber de JAVA, ia ser mais fácil para me responderem.
HappyHippyHippo Posted October 18, 2016 at 03:19 PM Report #599699 Posted October 18, 2016 at 03:19 PM 1 minute ago, jota.fullstack said: Não afecta, para mim é como envias, deves estar mesmo a adicionar algum header ao ficheiro. errado, diferentes SO's e/ou diferentes sistemas de ficheiros diferentes apresentam tamanhos diferentes do mesmo ficheiros, se este tamanho for comparado através de ferramentas que apresentam o tamanho em disco (que difere de tamanho de dados) por isso a pergunta é mais do que pertinente IRC : sim, é algo que ainda existe >> #p@p Portugol Plus
jota.fullstack Posted October 18, 2016 at 03:26 PM Report #599700 Posted October 18, 2016 at 03:26 PM (edited) 10 minutes ago, HappyHippyHippo said: errado, diferentes SO's e/ou diferentes sistemas de ficheiros diferentes apresentam tamanhos diferentes do mesmo ficheiros, se este tamanho for comparado através de ferramentas que apresentam o tamanho em disco (que difere de tamanho de dados) por isso a pergunta é mais do que pertinente Mas estamos a falar de windows 10 e windows server 2012 que têm o mesmo tratamento de ficheiros 😉 Claro que não comparas um debian com Windows claramente. Mas já que fizeste essa pergunta pertinente posso explicar como tens diferentes tamanhos em diferentes SO(Windows vs Unix). O windows assume que um Kilobyte tem 1024 bytes e um megabyte tem 1024 kilobytes, no caso do ubuntu ele assume que um Kilobyte tem 1000 bytes e um megabyte tem 1000 kilobytes. Logo podemos dizer que o Windows usa o ‘binary prefix’, e o Ubuntu ou GNU/Linux, usa o que chamamos "proper foam". 😉 Editado: Mais informações podes pesquisar aqui: https://en.wikipedia.org/wiki/Binary_prefix#Adoption_by_IEC_and_NIST Edited October 18, 2016 at 03:30 PM by jota.fullstack 1 Report
jota.fullstack Posted October 18, 2016 at 03:27 PM Report #599701 Posted October 18, 2016 at 03:27 PM Mas como ele usa tecnologias Windows nada interfere. 8 minutes ago, demyz0r said: Sim por acaso envio o header, mas não fazia ideia que isso alterava o tamanho do ficheiro. Eu poder posso, mas o codigo é VBA, so meti na parte do JAVA, porque como era uma pergunta generalista, e há mais pessoal a saber de JAVA, ia ser mais fácil para me responderem. Podes adicionar o trecho de código? Acredito que seja isso. 1 Report
HappyHippyHippo Posted October 18, 2016 at 03:32 PM Report #599702 Posted October 18, 2016 at 03:32 PM 2 minutes ago, jota.fullstack said: Mas estamos a falar de windows 10 e windows server 2012 que têm o mesmo tratamento de ficheiros 😉 Claro que não comparas um debian com Windows claramente. Mas já que fizeste essa pergunta pertinente posso explicar como tens diferentes tamanhos em diferentes SO(Windows vs Unix). O windows assume que um Kilobyte tem 1024 bytes e um megabyte tem 1024 kilobytes, no caso do ubuntu ele assume que um Kilobyte tem 1000 bytes e um megabyte tem 1000 kilobytes. Logo podemos dizer que o Windows usa o ‘binary prefix’, e o Ubuntu ou GNU/Linux, usa o que chamamos "proper foam". 😉 sim, sabes que são esses sistemas operativos agora, depois de perguntar já agora, deves estar a gozar comigo no que toca a explicar a diferença, não ? não só porque estás a assumir algo de estúpido (que não tem haver com os dados técnicos), como desconfio que seja a primeira resposta que podes encontrar no google IRC : sim, é algo que ainda existe >> #p@p Portugol Plus
jota.fullstack Posted October 18, 2016 at 03:38 PM Report #599703 Posted October 18, 2016 at 03:38 PM (edited) Amigo, eu quando disse que não afectava ele já tinha dado a resposta 😉 Faz scroll e vê. E quando refiro "dados técnicos" refiro a toda a gente deste fórum e não para ti exclusivamente. Como a questão do middleware e middleman? LOL que errei ao digitar no outro post. O que interessa é ajudar e como viste sou novo com este user 🙂 Por isso vamos juntar os nossos conhecimentos e ajudar quem precisa de ser ajudado, tal como quando precisar quero ser ajudado. E não enchas o tópico com assuntos que não interessam. Vamos focarmos no que é importante. Edited October 18, 2016 at 03:38 PM by jota.fullstack 1 Report
demyz0r Posted October 18, 2016 at 04:15 PM Author Report #599705 Posted October 18, 2016 at 04:15 PM (edited) 48 minutos atrás, jota.fullstack disse: Mas como ele usa tecnologias Windows nada interfere. Podes adicionar o trecho de código? Acredito que seja isso. Sim, esse é o meu código que faz o post do meu ficheiro para o servidor. Private Function pvPostFile(sUrl As String, sFileName As String, Optional ByVal bAsync As Boolean) As String Const STR_BOUNDARY As String = "3fbd04f5-b1ed-4060-99b9-fca7ff59c113" Dim nFile As Integer Dim baBuffer() As Byte Dim sPostData As String nFile = FreeFile Open sFileName For Binary Access Read As nFile If LOF(nFile) > 0 Then ReDim baBuffer(0 To LOF(nFile) - 1) As Byte Get nFile, , baBuffer sPostData = StrConv(baBuffer, vbUnicode) End If Close nFile sPostData = "--" & STR_BOUNDARY & vbCrLf & _ "Content-Disposition: form-data; name=""uploadfile""; filename=""" & Mid$(sFileName, InStrRev(sFileName, "\") + 1) & """" & vbCrLf & _ "Content-Type: application/octet-stream" & vbCrLf & vbCrLf & _ sPostData & vbCrLf & _ "--" & STR_BOUNDARY & "--" With CreateObject("Microsoft.XMLHTTP") .Open "POST", sUrl, bAsync .SetRequestHeader "Content-Type", "multipart/form-data; boundary=" & STR_BOUNDARY .Send pvToByteArray(sPostData) If Not bAsync Then pvPostFile = .ResponseText End If End With End Function Private Function pvToByteArray(sText As String) As Byte() pvToByteArray = StrConv(sText, vbFromUnicode) End Function Edited October 18, 2016 at 04:16 PM by demyz0r
jota.fullstack Posted October 18, 2016 at 08:18 PM Report #599713 Posted October 18, 2016 at 08:18 PM Que tipo de ficheiro estás a utilizar?
demyz0r Posted October 19, 2016 at 08:24 AM Author Report #599721 Posted October 19, 2016 at 08:24 AM 12 horas atrás, jota.fullstack disse: Que tipo de ficheiro estás a utilizar? Ficheiro zip, crio, meto os ficheiros que quero para o zip e envio-o de seguida.
demyz0r Posted October 19, 2016 at 09:35 AM Author Report #599722 Posted October 19, 2016 at 09:35 AM Se houver alguma maneira sem ser MD5 ou SHA1 de comparar ficheiros para verificar se são iguais também podes dizer, estou aberto a sugestões.
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now