21

Using the package hashids, I can obtain hashes (with encode and decode) from numbers.

    var Hashids = require("hashids"),
        hashids = new Hashids("this is my salt", 8);
    
    var id = hashids.encode(1);

Is there a similar package to obtain hashes from strings? (with encode and decode)

bguiz
  • 27,371
  • 47
  • 154
  • 243
JuanPablo
  • 23,792
  • 39
  • 118
  • 164

2 Answers2

37
var Hashids = require("hashids");
var hashids = new Hashids("this is my salt");

var hex = Buffer.from('Hello World', 'utf8').toString('hex');
console.log (hex); // '48656c6c6f20576f726c64'

var encoded = hashids.encodeHex(hex);
console.log (encoded); // 'rZ4pPgYxegCarB3eXbg'

var decodedHex = hashids.decodeHex('rZ4pPgYxegCarB3eXbg');
console.log (decodedHex); // '48656c6c6f20576f726c64'

var string = Buffer.from('48656c6c6f20576f726c64', 'hex').toString('utf8');
console.log (string); // 'Hello World'
Danail
  • 1,997
  • 18
  • 21
Roman Rhrn Nesterov
  • 3,538
  • 1
  • 28
  • 16
1

Getting hex without Node's Buffer.from ( to use with hashids.decodeHex)

const toHex = (str: string): string => str.split("")
        .reduce((hex, c) => hex += c.charCodeAt(0).toString(16).padStart(2, "0"), "")
const toUTF8 = (num: string): string =>
        num.match(/.{1,2}/g)
            .reduce((acc, char) => acc + String.fromCharCode(parseInt(char, 16)),"");
Banned
  • 9
  • 3