public static List<EncryptionRule> getEncryptionRules(String fileName) throws FileNotFoundException, IOException, InvalidArgumentException{
        System.out.println("loading EncryptionRules from: " + fileName);

        List<EncryptionRule> rules = new ArrayList<EncryptionRule>();

        BufferedReader in = null;
        StringTokenizer token = null;
        int lineNum = 0, tokenNum = 0;

        in = new BufferedReader(new FileReader(fileName));
        String str;
        while ((str = in.readLine()) != null) {
            lineNum++;
            token = new StringTokenizer(str, PiiConstants.RULES_DELIMITER);
            EncryptionRule rule  = new EncryptionRule();
            List<Integer> encRulesList = new ArrayList<Integer>();
            while (token.hasMoreTokens()) {
                tokenNum++;
                String tokenValue = token.nextToken();
                //System.out.println("Line #" + lineNum + ", Token #" + tokenNum + ", Token: " + tokenValue);
                if (tokenNum == 1) {
                    rule.setColumnName(tokenValue);

                } else if (tokenNum == 2) {
                    rule.setColumnId(Integer.parseInt(tokenValue));
                } else if (tokenNum > 2) {
                    if (tokenValue != null){
                        if (tokenValue.trim().equalsIgnoreCase(EncryptionRule.SHA1_KEY)) {
                            encRulesList.add(EncryptionRule.SHA1);
                        } else if (tokenValue.trim().equalsIgnoreCase(EncryptionRule.SHA2_KEY)) {
                            encRulesList.add(EncryptionRule.SHA2);
                        } else if (tokenValue.trim().equalsIgnoreCase(EncryptionRule.SHA256_KEY)) {
                            encRulesList.add(EncryptionRule.SHA256);
                        }else{
                            throw new InvalidArgumentException("Invalid hash config file: ambiguous encryption name on line["+lineNum+"] :: "+str);
                        }
                    }
                }
            }
            tokenNum = 0;
            rule.setEncryptions(encRulesList);
            rules.add(rule);
        }
        in.close();

        return rules;

    }