Converting a blob to a string


#1

So I use crypto.sha256() and it generated a blob but I can’t for the life of me turn that into a text representation (string) of the hash… I tried blob.readstring(32) and blob.tostring() but I still just get a blob back…


#2

If you’re trying to hash something, normally you don’t want the exact string that comes out, but instead a string showing the bytes as hex. If that’s what you’re looking for, then this works:
local s = “”;
foreach (b in dataBlob) s += format("%02x", b); // Forces leading 0 on msB <16 and is lower case
server.log(s);

I find using format() to do it lets me better control how it gets converted exactly.


#3

This.

I just checked the system tests for the agent’s crypto.sign() function, and the squirrel source contains this:

function to_hex(value) {
    local str = "";

    foreach (v in value) { 
        str += format("%02x", v);
    }

    return str;
}

…which, I think you’ll agree, is more-or-less identical.


#4

Thank you both, this is what I was trying to do :slight_smile: