1.定义常量:
# 鉴权开关2.引用常量:
signature.enable=false
signature.secretkey=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx
private
@Autowired
AccessConfigProperties accessConfigProperties;
@Value("${signature.enable}")3.签名验证:
private boolean signatureEnable;
if (signatureEnable) {附: DigestUtils工具类
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是一个算法工具类,在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);
- }
- /**
- * 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));
- }
- /**
- * 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);
- }
- /**
- * 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));
- }
- /**
- * 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));
- }