I don't think you have to return split_fields[1] on failure. Although now that I think of it maybe I shouldn't be returning "" because it might return the wrong message to the user. ie No Hashs Loaded ...

The issue with returning split_fields[1] is that it manages to pass valid and then starts to try crack it. Maybe I should return split_fields[1] and fix the valid method to error if its in the old format?