java实现sha1算法

项目中遇到的问题
官方案例中只给了python代码,对于指定内容进行sha1加密

def _sig(content_md5, url, date):
    sha1 = hashlib.sha1(app_key.lower().encode('utf-8'))
    sha1.update(content_md5.encode('utf-8'))
    sha1.update(url.encode('utf-8'))
    sha1.update("application/json".encode('utf-8'))
    sha1.update(date.encode('utf-8'))

    return "WPS-3:%s:%s" % (app_id, sha1.hexdigest())

需要使用java实现上述功能

	/** 16进制 : 16 */
    private static final int HEX = 16;
    /** SHA: 0xFF  */
    private static final int SHA_FF = 0xFF;
    /** SHA: 0x100   */
    private static final int SHA_100 = 0x100;

    /**
     * SHA算法实现
     * @param msg 明文
     * @param salt 盐
     * @return 密文
     */
    public static String encryptSHA(final String msg, String salt) {

        StringBuilder sb = new StringBuilder();
        try {
            MessageDigest md = MessageDigest.getInstance("SHA-1");
            md.update(salt.getBytes());
            byte[] bytes = md.digest(msg.getBytes());
            for (int i = 0; i < bytes.length; i++) {
                sb.append(Integer.toString((bytes[i] & SHA_FF) + SHA_100, HEX).substring(1));
            }
        } catch (final Exception e) {
            e.printStackTrace();
        }

        return sb.toString();
    }

java中加密的明文msg相当于python中sha1.update内容

你可能感兴趣的:(java,开发语言)