您的位置:首页 > 其它

签名验证使用示例(MD5)

2016-11-14 10:23 148 查看
1.定义常量:

# 鉴权开关
signature.enable=false
signature.secretkey=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx

2.引用常量:

private
@Autowired
AccessConfigProperties accessConfigProperties;


@Value("${signature.enable}")
private boolean signatureEnable;

3.签名验证:

if (signatureEnable) {
String appid = request.getHeader("appid");
String signature = request.getHeader("signature");
String timestamp = request.getHeader("timestamp");
String secretKey = accessConfigProperties.getSecretKey(appid);
if (secretKey == null) { // 接入产品非法
throw new SignatureException(ErrorCode.ERR_SIGNATURE_FAIL);
}
if (StringUtils.isEmpty(signature) || StringUtils.isEmpty(timestamp) || StringUtils.isEmpty(appid)) {
throw new SignatureException(ErrorCode.ERR_SIGNATURE_FAIL, "参数缺失");
}
String key = timestamp + uid + appid + secretKey;
String result = DigestUtils.md5DigestAsHex(key.getBytes());
if (result.equals(signature)) {
filterChain.doFilter(request, response);
return;
} else {
throw new SignatureException(ErrorCode.ERR_SIGNATURE_FAIL);
}
}

附:DigestUtils工具类

DigestUtils是一个算法工具类,在package org.apache.commons.codec.digest;这个包下。

该类中常用的方法有:

[plain] view
plain copy

print?





/**

* Calculates the MD5 digest and returns the value as a 16 element <code>byte[]</code>.

*

* @param data

* Data to digest

* @return MD5 digest

*/

public static byte[] md5(byte[] data) {

return getMd5Digest().digest(data);

}

[plain] view
plain copy

print?





/**

* Calculates the MD5 digest and returns the value as a 16 element <code>byte[]</code>.

*

* @param data

* Data to digest

* @return MD5 digest

* @throws IOException

* On error reading from the stream

* @since 1.4

*/

public static byte[] md5(InputStream data) throws IOException {

return digest(getMd5Digest(), data);

}

[plain] view
plain copy

print?





/**

* Calculates the MD5 digest and returns the value as a 16 element <code>byte[]</code>.

*

* @param data

* Data to digest

* @return MD5 digest

*/

public static byte[] md5(String data) {

return md5(getBytesUtf8(data));

}

[plain] view
plain copy

print?





/**

* Calculates the MD5 digest and returns the value as a 32 character hex string.

*

* @param data

* Data to digest

* @return MD5 digest as a hex string

*/

public static String md5Hex(byte[] data) {

return Hex.encodeHexString(md5(data));

}

[plain] view
plain copy

print?





/**

* Calculates the MD5 digest and returns the value as a 32 character hex string.

*

* @param data

* Data to digest

* @return MD5 digest as a hex string

* @throws IOException

* On error reading from the stream

* @since 1.4

*/

public static String md5Hex(InputStream data) throws IOException {

return Hex.encodeHexString(md5(data));

}

[plain] view
plain copy

print?





/**

* Calculates the MD5 digest and returns the value as a 32 character hex string.

*

* @param data

* Data to digest

* @return MD5 digest as a hex string

*/

public static String md5Hex(String data) {

return Hex.encodeHexString(md5(data));

}

[plain] view
plain copy

print?





/**

* Calculates the SHA-1 digest and returns the value as a <code>byte[]</code>.

*

* @param data

* Data to digest

* @return SHA-1 digest

*/

public static byte[] sha(byte[] data) {

return getShaDigest().digest(data);

}

[plain] view
plain copy

print?





/**

* Calculates the SHA-1 digest and returns the value as a <code>byte[]</code>.

*

* @param data

* Data to digest

* @return SHA-1 digest

* @throws IOException

* On error reading from the stream

* @since 1.4

*/

public static byte[] sha(InputStream data) throws IOException {

return digest(getShaDigest(), data);

}

[plain] view
plain copy

print?





/**

* Calculates the SHA-1 digest and returns the value as a <code>byte[]</code>.

*

* @param data

* Data to digest

* @return SHA-1 digest

*/

public static byte[] sha(String data) {

return sha(getBytesUtf8(data));

}

[plain] view
plain copy

print?





/**

* Calculates the SHA-256 digest and returns the value as a <code>byte[]</code>.

* <p>

* Throws a <code>RuntimeException</code> on JRE versions prior to 1.4.0.

* </p>

*

* @param data

* Data to digest

* @return SHA-256 digest

* @since 1.4

*/

public static byte[] sha256(byte[] data) {

return getSha256Digest().digest(data);

}

/**

* Calculates the SHA-256 digest and returns the value as a <code>byte[]</code>.

* <p>

* Throws a <code>RuntimeException</code> on JRE versions prior to 1.4.0.

* </p>

*

* @param data

* Data to digest

* @return SHA-256 digest

* @throws IOException

* On error reading from the stream

* @since 1.4

*/

public static byte[] sha256(InputStream data) throws IOException {

return digest(getSha256Digest(), data);

}

/**

* Calculates the SHA-256 digest and returns the value as a <code>byte[]</code>.

* <p>

* Throws a <code>RuntimeException</code> on JRE versions prior to 1.4.0.

* </p>

*

* @param data

* Data to digest

* @return SHA-256 digest

* @since 1.4

*/

public static byte[] sha256(String data) {

return sha256(getBytesUtf8(data));

}

/**

* Calculates the SHA-256 digest and returns the value as a hex string.

* <p>

* Throws a <code>RuntimeException</code> on JRE versions prior to 1.4.0.

* </p>

*

* @param data

* Data to digest

* @return SHA-256 digest as a hex string

* @since 1.4

*/

public static String sha256Hex(byte[] data) {

return Hex.encodeHexString(sha256(data));

}

/**

* Calculates the SHA-256 digest and returns the value as a hex string.

* <p>

* Throws a <code>RuntimeException</code> on JRE versions prior to 1.4.0.

* </p>

*

* @param data

* Data to digest

* @return SHA-256 digest as a hex string

* @throws IOException

* On error reading from the stream

* @since 1.4

*/

public static String sha256Hex(InputStream data) throws IOException {

return Hex.encodeHexString(sha256(data));

}

/**

* Calculates the SHA-256 digest and returns the value as a hex string.

* <p>

* Throws a <code>RuntimeException</code> on JRE versions prior to 1.4.0.

* </p>

*

* @param data

* Data to digest

* @return SHA-256 digest as a hex string

* @since 1.4

*/

public static String sha256Hex(String data) {

return Hex.encodeHexString(sha256(data));

}

[plain] view
plain copy

print?





/**

* Calculates the SHA-384 digest and returns the value as a <code>byte[]</code>.

* <p>

* Throws a <code>RuntimeException</code> on JRE versions prior to 1.4.0.

* </p>

*

* @param data

* Data to digest

* @return SHA-384 digest

* @since 1.4

*/

public static byte[] sha384(byte[] data) {

return getSha384Digest().digest(data);

}

/**

* Calculates the SHA-384 digest and returns the value as a <code>byte[]</code>.

* <p>

* Throws a <code>RuntimeException</code> on JRE versions prior to 1.4.0.

* </p>

*

* @param data

* Data to digest

* @return SHA-384 digest

* @throws IOException

* On error reading from the stream

* @since 1.4

*/

public static byte[] sha384(InputStream data) throws IOException {

return digest(getSha384Digest(), data);

}

/**

* Calculates the SHA-384 digest and returns the value as a <code>byte[]</code>.

* <p>

* Throws a <code>RuntimeException</code> on JRE versions prior to 1.4.0.

* </p>

*

* @param data

* Data to digest

* @return SHA-384 digest

* @since 1.4

*/

public static byte[] sha384(String data) {

return sha384(getBytesUtf8(data));

}

/**

* Calculates the SHA-384 digest and returns the value as a hex string.

* <p>

* Throws a <code>RuntimeException</code> on JRE versions prior to 1.4.0.

* </p>

*

* @param data

* Data to digest

* @return SHA-384 digest as a hex string

* @since 1.4

*/

public static String sha384Hex(byte[] data) {

return Hex.encodeHexString(sha384(data));

}

/**

* Calculates the SHA-384 digest and returns the value as a hex string.

* <p>

* Throws a <code>RuntimeException</code> on JRE versions prior to 1.4.0.

* </p>

*

* @param data

* Data to digest

* @return SHA-384 digest as a hex string

* @throws IOException

* On error reading from the stream

* @since 1.4

*/

public static String sha384Hex(InputStream data) throws IOException {

return Hex.encodeHexString(sha384(data));

}

/**

* Calculates the SHA-384 digest and returns the value as a hex string.

* <p>

* Throws a <code>RuntimeException</code> on JRE versions prior to 1.4.0.

* </p>

*

* @param data

* Data to digest

* @return SHA-384 digest as a hex string

* @since 1.4

*/

public static String sha384Hex(String data) {

return Hex.encodeHexString(sha384(data));

}

[plain] view
plain copy

print?





/**

* Calculates the SHA-512 digest and returns the value as a <code>byte[]</code>.

* <p>

* Throws a <code>RuntimeException</code> on JRE versions prior to 1.4.0.

* </p>

*

* @param data

* Data to digest

* @return SHA-512 digest

* @since 1.4

*/

public static byte[] sha512(byte[] data) {

return getSha512Digest().digest(data);

}

/**

* Calculates the SHA-512 digest and returns the value as a <code>byte[]</code>.

* <p>

* Throws a <code>RuntimeException</code> on JRE versions prior to 1.4.0.

* </p>

*

* @param data

* Data to digest

* @return SHA-512 digest

* @throws IOException

* On error reading from the stream

* @since 1.4

*/

public static byte[] sha512(InputStream data) throws IOException {

return digest(getSha512Digest(), data);

}

/**

* Calculates the SHA-512 digest and returns the value as a <code>byte[]</code>.

* <p>

* Throws a <code>RuntimeException</code> on JRE versions prior to 1.4.0.

* </p>

*

* @param data

* Data to digest

* @return SHA-512 digest

* @since 1.4

*/

public static byte[] sha512(String data) {

return sha512(getBytesUtf8(data));

}

/**

* Calculates the SHA-512 digest and returns the value as a hex string.

* <p>

* Throws a <code>RuntimeException</code> on JRE versions prior to 1.4.0.

* </p>

*

* @param data

* Data to digest

* @return SHA-512 digest as a hex string

* @since 1.4

*/

public static String sha512Hex(byte[] data) {

return Hex.encodeHexString(sha512(data));

}

/**

* Calculates the SHA-512 digest and returns the value as a hex string.

* <p>

* Throws a <code>RuntimeException</code> on JRE versions prior to 1.4.0.

* </p>

*

* @param data

* Data to digest

* @return SHA-512 digest as a hex string

* @throws IOException

* On error reading from the stream

* @since 1.4

*/

public static String sha512Hex(InputStream data) throws IOException {

return Hex.encodeHexString(sha512(data));

}

/**

* Calculates the SHA-512 digest and returns the value as a hex string.

* <p>

* Throws a <code>RuntimeException</code> on JRE versions prior to 1.4.0.

* </p>

*

* @param data

* Data to digest

* @return SHA-512 digest as a hex string

* @since 1.4

*/

public static String sha512Hex(String data) {

return Hex.encodeHexString(sha512(data));

}

/**

* Calculates the SHA-1 digest and returns the value as a hex string.

*

* @param data

* Data to digest

* @return SHA-1 digest as a hex string

*/

public static String shaHex(byte[] data) {

return Hex.encodeHexString(sha(data));

}

[plain] view
plain copy

print?





/**

* Calculates the SHA-1 digest and returns the value as a hex string.

*

* @param data

* Data to digest

* @return SHA-1 digest as a hex string

* @throws IOException

* On error reading from the stream

* @since 1.4

*/

public static String shaHex(InputStream data) throws IOException {

return Hex.encodeHexString(sha(data));

}

/**

* Calculates the SHA-1 digest and returns the value as a hex string.

*

* @param data

* Data to digest

* @return SHA-1 digest as a hex string

*/

public static String shaHex(String data) {

return Hex.encodeHexString(sha(data));

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  MD5 签名验证