cn.hutool.jwt.signers.HMacJWTSigner Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of hutool-all Show documentation
Show all versions of hutool-all Show documentation
Hutool是一个小而全的Java工具类库,通过静态方法封装,降低相关API的学习成本,提高工作效率,使Java拥有函数式语言般的优雅,让Java语言也可以“甜甜的”。
package cn.hutool.jwt.signers;
import cn.hutool.core.util.CharsetUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.crypto.digest.HMac;
import java.nio.charset.Charset;
import java.security.Key;
/**
* HMac算法签名实现
*
* @author looly
* @since 5.7.0
*/
public class HMacJWTSigner implements JWTSigner {
private Charset charset = CharsetUtil.CHARSET_UTF_8;
private final HMac hMac;
/**
* 构造
*
* @param algorithm HMAC签名算法
* @param key 密钥
*/
public HMacJWTSigner(String algorithm, byte[] key) {
this.hMac = new HMac(algorithm, key);
}
/**
* 构造
*
* @param algorithm HMAC签名算法
* @param key 密钥
*/
public HMacJWTSigner(String algorithm, Key key) {
this.hMac = new HMac(algorithm, key);
}
/**
* 设置编码
*
* @param charset 编码
* @return 编码
*/
public HMacJWTSigner setCharset(Charset charset) {
this.charset = charset;
return this;
}
@Override
public String sign(String headerBase64, String payloadBase64) {
return hMac.digestBase64(StrUtil.format("{}.{}", headerBase64, payloadBase64), charset, true);
}
@Override
public boolean verify(String headerBase64, String payloadBase64, String signBase64) {
final String sign = sign(headerBase64, payloadBase64);
return hMac.verify(
StrUtil.bytes(sign, charset),
StrUtil.bytes(signBase64, charset));
}
@Override
public String getAlgorithm() {
return this.hMac.getAlgorithm();
}
}
© 2015 - 2024 Weber Informatics LLC | Privacy Policy