#!/usr/bin/perl -w use strict; use CGI::Fast qw(:standard); use Digest::HMAC_SHA1; use MIME::Base64; use URI::URL; my ($key) = "0xc0dec0de"; my ($baseUrl) = "http://www.perlmonks.org/?node_id="; my ($url, $parsed_url, $url_to_sign, $node); my ($digest, $signature, $signed_url); while (new CGI::Fast) { $node = (defined param('node')) ? param('node') : '986481'; $url = $baseUrl . $node; $parsed_url = URI::URL->new($url); $url_to_sign = $parsed_url->path_query; $digest = Digest::HMAC_SHA1->new($key); $digest->add($url_to_sign); $signature = $digest->b64digest; $signed_url = $parsed_url->scheme .'://' . $parsed_url->host . $url_to_sign . '&signature=' . $signature; print " IN: $url\n"; print "OUT: $signed_url\n"; }