Forum Discussion
Call API as data source with parameter hash in MD5
Hello,
I have a GET API that I want to call to get my data.
In Power query, I have to send dynamic values in my GET URL :
- First variable : current timestamp, in the following format YYYY-MM-DD hh:mm:ss => I managed to get something close with DateTime.LocalNow() but I have to change the format & convert it to text
- Second variable : a concatenation of many variables, hashed in MD5
Here is the Java code provided by the API :
String text = apiToken + sTimestamp;
byte[] defaultBytes = text.getBytes();
MessageDigest algorithm = MessageDigest.getInstance("MD5");
algorithm.reset();
algorithm.update(defaultBytes);
byte messageDigest[] = algorithm.digest();
StringBuffer hexString = new StringBuffer();
for (int i = 0; i < messageDigest.length; i++) {
String hex = Integer.toHexString(0xFF & messageDigest[i]);
if (hex.length() == 1)
hexString.append('0');
hexString.append(hex);
}
String md5Text = hexString + "";
return md5Text;
Is there a way to do this in Power Query directly by any chance?
I tried to search for ways to hash MD5 in Power Query directly but I can't find anything.
Any help would be appreciated.
Hello, pr92 ,
I am not aware of native way, however, here's workaround using public API to hash it:
here's M code, you can turn it into function:let valueToHash = "hello", md5 = Web.Contents("api.hashify.net", [RelativePath="/hash/md5/hex?value="&valueToHash]), openJson = Json.Document(md5)[Digest] in openJson
edit:
I am gonna give you the function also here:let hastToMD5 = (valueToHash as text)=> let md5 = Web.Contents("api.hashify.net", [RelativePath="/hash/md5/hex?value="&valueToHash]), openJson = Json.Document(md5)[Digest] in openJson in hastToMD5and then you call it like this:
1 Reply
- vojtechsimaSuper User
Hello, pr92 ,
I am not aware of native way, however, here's workaround using public API to hash it:
here's M code, you can turn it into function:let valueToHash = "hello", md5 = Web.Contents("api.hashify.net", [RelativePath="/hash/md5/hex?value="&valueToHash]), openJson = Json.Document(md5)[Digest] in openJson
edit:
I am gonna give you the function also here:let hastToMD5 = (valueToHash as text)=> let md5 = Web.Contents("api.hashify.net", [RelativePath="/hash/md5/hex?value="&valueToHash]), openJson = Json.Document(md5)[Digest] in openJson in hastToMD5and then you call it like this: