Erlang Equivalent of C# Hash

Johan Bevemyr <>
Fri Dec 23 00:50:11 CET 2005


I use the following code on the C# side:

*using System;
using System.Security.Cryptography;
*
    private string mk_digest(string str) {
        byte[] bHashResult = new byte[21];
        MD5CryptoServiceProvider md5 = new MD5CryptoServiceProvider();
        byte[] bMD5Hash = Encoding.GetEncoding("iso-8859-1").GetBytes(str);
        bHashResult = md5.ComputeHash(bMD5Hash);
        return Convert.ToBase64String(bHashResult);
    }

Works nicely with Jockes code below on the Erlang side.
-Johan

Joakim G. wrote:

> and yes
>
> To compare the digests you have to do something like this on
> the Erlang side:
>
>     Context = erlang:md5_init(),
>     NewContext = erlang:md5_update(Context, String),
>     base64:str_2_base64(binary_to_list(erlang:md5_final(NewContext)))
>
> /Jocke
>
> PS http://www.sics.se/~joe/bluetail/eol/base64.erl DS
>
> Joakim G. wrote:
>
>> Jing Ding wrote:
>>
>>> Hi there,
>>> I previously asked about how to do MD5. And I got answers.
>>> Thanks for your help. But the binary result is not the same as the 
>>> string generated from C# :
>>> ------------------------------------------------------
>>> byte[] a = md5Hash.ComputeHash(AE.GetBytes(UserID + value));
>>> PasswordHash = Convert.ToBase64String(a);
>>> ---------------------------------------------------
>>> Anyone else happen to came across this? Thanks.
>>
>>
>>
>> Do like this in C#:
>>
>> ==
>>
>>     byte[] buffer = System.Text.Encoding.Default.GetBytes(String);
>>     System.Security.Cryptography.MD5CryptoServiceProvider Check;
>>     Check = new System.Security.Cryptography.MD5CryptoServiceProvider();
>>     byte[] Hash = Check.ComputeHash(buffer);
>>     string HashString = "";
>>     foreach (byte a in Hash) {
>>         if (a < 16) {
>>             HashString += "0" + a.ToString("X");
>>         } else {
>>             HashString += a.ToString("X");
>>         }
>>     }
>>     return HashString.ToLower();
>>
>> ==
>>
>> and it works with Erlang's md5 engine and Perl's CPAN
>> md5_base64 (in Digest::MD5::Perl) out of the box.
>>
>> If you like a pragmatic answer. This is it. :-)
>>
>> Cheers
>> /Jocke
>
>
>




More information about the erlang-questions mailing list