CRYPTOGRAFIA MD5 DE ARQUIVO XML

ARNALDOCRUZ 14/11/2010 11:34:52
#357422
Bom dia colegas

Tenho um arquivo xml

como é que eu gero a cryptografia MD deste arquivo no vbnet 2010 ou 2008

imagino algo do tipo md5(meuarquivo.xml.tostring).......

Obrigado
PAVILLION 14/11/2010 12:47:11
#357430
ARNALDOCRUZ....

Não sei se te ajuda, mas tem esse artigo do Macoratti que achei e se parece com o que quer:
Link: VB.NET - Gerando Hash e comparando arquivos
Só uma observação, não testei como o código funciona...Só olhei por cima o código...
Abraços..
ESLEYSANCHES 14/11/2010 12:56:33
#357432
Resposta escolhida
Tenho um metodo pronto para vc amigo:

        static string getMd5Hash(string input)
{
// Create a new instance of the MD5CryptoServiceProvider object.
MD5 md5Hasher = MD5.Create();

// Convert the input string to a byte array and compute the hash.
byte[] data = md5Hasher.ComputeHash(Encoding.Default.GetBytes(input));

// Create a new Stringbuilder to collect the bytes
// and create a string.
StringBuilder sBuilder = new StringBuilder();

// Loop through each byte of the hashed data
// and format each one as a hexadecimal string.
for (int i = 0; i < data.Length; i++)
{
sBuilder.Append(data[i].ToString([Ô]x2[Ô]));
}

// Return the hexadecimal string.
return sBuilder.ToString();
}


Para utilizar:

MessageBox.Show(getMd5Hash([Ô]ARNALDOCRUZ[Ô]))

O metodo pede uma string e retorna uma string com o HASH MD5


Flw abraços !!!
ESLEYSANCHES 14/11/2010 13:01:15
#357433
Se vc quiser tbm tem um metodo que pode ser usado para verfiicar se o HASH MD5 é válido.
Você informa o XML por exemplo ou um texto e informa o HASH que foi gerado, para verificar se é válido


static bool verifyMd5Hash(string input, string hash)
{
// Hash the input.
string hashOfInput = getMd5Hash(input);

// Create a StringComparer an comare the hashes.
StringComparer comparer = StringComparer.OrdinalIgnoreCase;

if (0 == comparer.Compare(hashOfInput, hash))
{
return true;
}
else
{
return false;
}
}


Por exemplo:

if (verifyMd5Hash([Ô]ARNALDOCRUZ[Ô], [Ô]3f43607d8b36d164f7f6535622493ea9[Ô]) == false)
{
MessageBox.Show([Ô]HASH não é válido !![Ô]);
}
else
{
MessageBox.Show([Ô]HASH é válido !!![Ô]);

}


Espero que ajude !!
Abraços !!
ARNALDOCRUZ 15/11/2010 14:25:55
#357488
Elysanches não soube como utilizar este seu código, colei no vbnet 2010 .

erros como segue abaixo

MD5 md5Hasher -->>. Declaration expected
byte[] --- Sintax error
StringBuilder sBuilder-->>. Declaration expected


ESLEYSANCHES 15/11/2010 15:01:55
#357491
Esse código não está em VB.Net amigo, está em C#
Outra coisa, não esqueça de add os [Ô]using[Ô] (C#) ou Imports (VB.Net).

(C#)
using System.Security.Cryptography;
(VB.Net)
Imports System.Security.Cryptography


Abraços !!!
ARNALDOCRUZ 15/11/2010 16:59:16
#357500
bom optei por usar a função abaixo mas tem um porem

na documentação está assim -->>.. Arquivo = Arquivo.Replace([Ô][Ô],[Ô][Ô]).Replace([Ô]
[Ô],[Ô][Ô]).Replace([Ô]    [Ô],[Ô][Ô]);

1 - Isso seria para retirar as barras do nome do arquivo ou do conteudo do arquivo ou estou enganado ?
2 - e como fazer pra tirar ? já que existe um conversão de bytes ?


Public Function md5_file(ByVal filepath As String, Optional ByVal raw_output As Boolean = False) As String
Try
If Not System.IO.File.Exists(filepath) Then
Throw New Exception([Ô]Arquivo inexistente[Ô])
End If
Dim fs As New System.IO.FileStream(filepath, IO.FileMode.Open) [ô]usando a classe FileStream em vez da StreamReader
Dim md5 As New MD5CryptoServiceProvider
md5.ComputeHash(fs) [ô]Calculando direto atraves do objeto
fs.Close()
Dim hashfinal As String = [Ô][Ô]
For i As Integer = 0 To md5.Hash.Length - 1
If raw_output Then
hashfinal += Convert.ToChar(md5.Hash(i))
Else
hashfinal += Convert.ToString(md5.Hash(i).ToString([Ô]x2[Ô]))
End If
Next
Return hashfinal
Catch ex As Exception
Return ex.Message
End Try
End Function
ESLEYSANCHES 15/11/2010 17:10:06
#357505
Isso quer dizer para retirar as linhas em brancos, ou enters ou tabulação (    ).
Ou seja basicamente ele deixa o arquivo xml todo em uma linha só para que possa ser criptografado em MD5.
Tópico encerrado , respostas não são mais permitidas