Package org.aoju.bus.crypto.digest.otp
Class HOTP
java.lang.Object
org.aoju.bus.crypto.digest.otp.HOTP
- Direct Known Subclasses:
TOTP
HMAC-based one-time passwords (HOTP) 基于HMAC算法一次性密码生成器, 规范见:RFC 4226
基于事件同步,通过某一特定的事件次序及相同的种子值作为输入,通过HASH算法运算出一致的密码
参考:https://github.com/jchambers/java-otp
- Since:
- Java 17+
- Author:
- Kimi Liu
-
Field Summary
Fields -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionintgenerate(long counter) 生成一次性密码static StringgenerateSecretKey(int numBytes) 生成共享密钥的Base32表示形式获取HMAC算法int获取密码长度,可以是6,7,8
-
Field Details
-
DEFAULT_PASSWORD_LENGTH
public static final int DEFAULT_PASSWORD_LENGTH默认密码长度.- See Also:
-
-
Constructor Details
-
HOTP
public HOTP(byte[] key) 构造,使用默认密码长度和默认HMAC算法(HmacSHA1)- Parameters:
key- 共享密码,RFC 4226要求最少128位
-
HOTP
public HOTP(int passwordLength, byte[] key) 构造,使用默认HMAC算法(HmacSHA1)- Parameters:
passwordLength- 密码长度,可以是6,7,8key- 共享密码,RFC 4226要求最少128位
-
HOTP
public HOTP(int passwordLength, org.aoju.bus.core.lang.Algorithm algorithm, byte[] key) 构造- Parameters:
passwordLength- 密码长度,可以是6,7,8algorithm- HMAC算法枚举key- 共享密码,RFC 4226要求最少128位
-
-
Method Details
-
generateSecretKey
生成共享密钥的Base32表示形式- Parameters:
numBytes- 将生成的种子字节数量。- Returns:
- 共享密钥
-
generate
public int generate(long counter) 生成一次性密码- Parameters:
counter- 事件计数的值,8 字节的整数,称为移动因子(moving factor), 可以是基于计次的动移动因子,也可以是计时移动因子- Returns:
- 一次性密码的int值
-
getPasswordLength
public int getPasswordLength()获取密码长度,可以是6,7,8- Returns:
- 密码长度,可以是6,7,8
-
getAlgorithm
获取HMAC算法- Returns:
- HMAC算法
-