/**
     * 获取权限签名
     * @param params
     * @return
     */
    public String getSignature(String params) throws Exception{
        MessageDigest crypt = MessageDigest.getInstance("SHA-1");
        crypt.reset();
        crypt.update(params.getBytes("UTF-8"));
        String signature = byteToHex(crypt.digest());
        return signature;
    }

    private String byteToHex(final byte[] hash){
        Formatter formatter = new Formatter();
        for(byte b:hash){
            formatter.format("%02x",b);
        }
        String result = formatter.toString();
        formatter.close();
        return result;
    }

java.security.MessageDigest类用于为应用程序提供信息摘要算法的功能,如 MD5 或 SHA 算法。简单点说就是用于生成散列码。信息摘要是安全的单向哈希函数,它接收随意大小的数据,输出固定长度的哈希值。关于信息摘要和散列码请參照《数字证书简单介绍

MessageDigest 通过其getInstance系列静态函数来进行实例化和初始化。MessageDigest 对象通过使用 update 方法处理数据。不论什么时候都能够调用 reset 方法重置摘要。一旦全部须要更新的数据都已经被更新了,应该调用 digest 方法之中的一个完毕哈希计算并返回结果。

对于给定数量的更新数据,digest 方法仅仅能被调用一次。digest 方法被调用后,MessageDigest  对象被又一次设置成其初始状态。