Base64 encode and decode with error handling
Crystal
require "base64"
def encode_token(payload : String) : String
Base64.strict_encode(payload)
end
def decode_token(token : String) : String
String.new(Base64.decode(token))
rescue ex : Base64::Error
raise ArgumentError.new("invalid base64 token: #{ex.message}")
end
token = encode_token("hello world")
puts token # aGVsbG8gd29ybGQ=
puts decode_token(token) # hello world