A RESTful interface for MD5 hashes

Friday July 22, 2011

•  computer science •  information technology •  rails •  Ruby •  software •  software engineering •  systems science •  web •  webservices • 

Or not quite. I had a need to generate MD5 hashes inside a Google Spreadsheet, but Google does not include an MD5 function (and neither does OpenOffice.org). Google does, however, support a function to get XML data and process it with Xpath. So assuming someone had created an MD5 generator on the web that was accessible via XML, I set to work. It turns out, nobody has ever needed this before. But that’s okay, I am a Real Programmer.

I installed Ruby on Rails and created a very simple controller for hashes:

class HashController < ApplicationController
    def md5
    result = { }
    result['data'] = params[:id]
    result['md5'] = Digest::MD5.hexdigest(params[:id])

    respond_to do |format|
        format.json { render :json => result }
        format.xml { render :xml => result }
    end
end

Which is now accessible via http://api.jameshoward.us/hash/md5/foo.json or foo.xml as appropriate. In addition, there is an sha1 method available. It’s all running on a minimal instance with Heroku, so please use it to your heart’s content.