Generate a secured key composed of the integer value encoded in Base62
    and a nonce.

    @param value: an integer value.

    @param key_nonce_separator: the character that is used to separate the
        key and the nonce to form the secured key.

    @param nonce_length: the number of characters to compose the nonce.

    @param base: a sequence of characters that is used to encode the
           integer value.

    @return: a tuple ``(key, nonce, secured_key)``:
        * ``key``: string representation of the integer value in Base62.
        * ``nonce``: "number used once", a pseudo-random number to
          ensure that the key cannot be reused in replay attacks.
        * ``secured_key``: a string composed of the key concatenated with
          the nonce.

def generate_secured_key(value,
        key_nonce_separator='.',
        nonce_length=4,
        base=BASE62):
    """
    Generate a secured key composed of the integer value encoded in Base62
    and a nonce.

    @param value: an integer value.

    @param key_nonce_separator: the character that is used to separate the
        key and the nonce to form the secured key.

    @param nonce_length: the number of characters to compose the nonce.

    @param base: a sequence of characters that is used to encode the
           integer value.

    @return: a tuple ``(key, nonce, secured_key)``:
        * ``key``: string representation of the integer value in Base62.
        * ``nonce``: "number used once", a pseudo-random number to
          ensure that the key cannot be reused in replay attacks.
        * ``secured_key``: a string composed of the key concatenated with
          the nonce.
    """
    if not isinstance(value, (int, long)):
        raise ValueError()

    posix_time = int(time.mktime(datetime.datetime.now().timetuple()))
    nonce = hashlib.md5(str(posix_time)).hexdigest()[:nonce_length]
    key = int_to_key(value, base=base)
    return key, nonce, '%s%s%s' % (key, key_nonce_separator, nonce)