base32_pure
Encodes and decodes binary string or integer tokens to and from base32.
Description
It uses the Crockford alphabet defined at www.crockford.com/wrmg/base32.html - which is probably not the most efficient, but it is tolerant to user mistakes.
-
It’s case insensitive
-
I, l and 1 maps to the same value
-
0 and O maps to the same value
-
U is excluded to reduce the likelyhood of accidental obscenity
Usage
require 'base32_pure'
encoded = Base32::Crockford.encode("Some token")
Base32::Crockford.decode(encoded)
hypenated = Base32::Crockford.hypenate(encoded)
Base32::Crockford.decode(hypenated)
# Fixnum and Bignum should work as well
encoded = Base32::Crockford.encode(12345)
Base32::Crockford.decode(encoded, :integer)
# Typical use case
require 'uuidtools'
digest = UUIDTools::UUID.random_create.raw
base32_token = Base32::Crockford.encode(digest)
Features/problems
The optional check value is not implemented.
Note on Patches/Pull Requests
-
Fork the project.
-
Make your feature addition or bug fix.
-
Add tests for it. This is important so I don’t break it in a future version unintentionally.
-
Commit, do not mess with rakefile, version, or history. (if you want to have your own version, that is fine but bump version in a commit by itself I can ignore when I pull)
-
Send me a pull request. Bonus points for topic branches.
Copyright
Copyright © 2010 Rune Myrland. See LICENSE for details.