I was handed an software doc (or what passes for proper documentation nowadays). Much to my chagrin, it might as well have been gently used piece of toilet paper from the men's room. Needless to say, the contents of said doc left much to be desired.
So, I am left with a great mystery. This doc describes some sort of API; or so I'm told. How such a doc could describe an actual piece of software is beyond me, and beyond the scope of my current inquiry. Anyway, on to my question....
Once such code snippet in this doc is written in C#. Being a strictly open-source/Linux guy, I don't know C# for the life of me.
I'm on a PHP setup. In other words I need a PHP version of the following C# code:
string dateSince = "2010-02-01";
string siteID = "bash.org";
string sharedSecret = "12345"; // the same combination on my luggage!
using System.Security.Cryptography;
MD5CryptoServiceProvider x = new MD5CryptoServiceProvider();
byte[] dataBytes = System.Text.Encoding.ASCII.GetBytes(string.Format("{0}{1}{2}", dateSince, siteID, sharedSecret));
string result = BitConverter.ToString(x.ComputeHash(dataBytes));
... this code snippet appears to be incomplete. But here's what I think is going on:
1) concatenating dateSince, siteID, and sharedSecret. Stealing underpants.
2) ???
2a) converting that string into a ascii encoded byte array.
2b) taking the MD5 hash of that array.
3) PROFIT!!
This mysterious BitConverter object appears to be converting that MD5 hashed array, into a string of hexadecimal numbers. According to the aforementioned doc, the value of result should look something like: "6D-E9-9A-B6-73-D8-10-79-BC-4F-EE-51-A4-84-15-D8"
Any help is greatly appreciated!!
Forgot to include this earlier. Here's the PHP version of what I've written so far:
$date_since = "2010-02-01";
$site_id = "bash.org";
$shared_secret = "12345";
$initial_token = $date_since.$site_id.$shared_secret;
$ascii_version = array();
foreach($i=0; $i < strlen($initial_token); $i++) {
$ascii_version[] = ord(substr($initial_token,$i,1));
}
$md5_version = md5(join("", $ascii_version));
$hexadecimal_bits = array();
foreach($i=0; $i < strlen($md5_version); $i++) {
// @todo convert to hexadecimal here?
$hexadecimal_bits[] = bin2hex(substr($md5_version,$i,1));
}
$result = join("-", $hexadecimal_bits);