Forum Discussion

pr92's avatar
pr92
Frequent Visitor
1 year ago
Solved

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
        hastToMD5

    and then you call it like this: 

     

     

1 Reply

  • 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
        hastToMD5

    and then you call it like this: