diff --git a/secure_token.js b/secure_token.js new file mode 100644 index 0000000..32abccd --- /dev/null +++ b/secure_token.js @@ -0,0 +1,16 @@ +const crypto = require('crypto'); + +const secret = 'mysecret'; +const uri = '/my/uri'; +const expire = '1470055000'; + +const md5 = crypto.createHash('md5'); +md5.update((secret + uri + expire), 'utf-8'); +const token = Buffer.from(md5.digest()).toString('base64').replace(/=|\+|\//g, (match) => ({ + '=': '', + '+': '-', + '/': '_', +}[match])); + +console.log(`http://www.example.org${uri}?st=${token}&e=${expire}`); + diff --git a/secure_token.php b/secure_token.php index 8a3418e..de8db7a 100755 --- a/secure_token.php +++ b/secure_token.php @@ -4,10 +4,8 @@ $uri = "/my/uri"; $expire = "1470055000"; -$token = base64_encode(md5($secret . $uri . $expire, true)); -$token = str_replace("=", "", $token); -$token = strtr($token, "+/", "-_"); +$token = str_replace(["=", '+', '/'], ['', '-', '_'], base64_encode(md5($secret . $uri . $expire, true))); -print "http://www.example.org" . $uri . "?st=" . $token . "&e=" . $expire . "\n"; +echo "http://www.example.org" . $uri . "?st=" . $token . "&e=" . $expire . "\n"; ?> diff --git a/secure_token.py b/secure_token.py index 0c8bd87..70fc6e3 100755 --- a/secure_token.py +++ b/secure_token.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/env python3 import base64 import hashlib @@ -8,7 +8,8 @@ expire = '1470055000' md5 = hashlib.md5() -md5.update(secret + uri + expire) -token = base64.b64encode(md5.digest()).replace('=','').replace('+','-').replace('/','_') +md5.update((secret + uri + expire).encode('utf-8')) +token = base64.b64encode(md5.digest()).decode('utf-8').replace('=','').replace('+','-').replace('/','_') + +print('http://www.example.org%s?st=%s&e=%s' % (uri, token, expire)) -print 'http://www.example.org%s?st=%s&e=%s' % (uri, token, expire)