请帮我生成一段Java API接口加密鉴权的代码
时间: 2023-10-15 18:02:02 浏览: 221
好的,以下是一个简单的Java API接口加密鉴权的示例代码:
```java
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
public class AuthUtils {
private static final String SECRET_KEY = "your_secret_key";
public static String generateAuthToken(String apiPath, long timestamp) {
String strToHash = apiPath + timestamp + SECRET_KEY;
try {
MessageDigest md = MessageDigest.getInstance("SHA-256");
byte[] hash = md.digest(strToHash.getBytes());
StringBuilder sb = new StringBuilder();
for (byte b : hash) {
sb.append(String.format("%02x", b));
}
return sb.toString();
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
return null;
}
}
public static boolean verifyAuthToken(String authToken, String apiPath, long timestamp) {
String expectedAuthToken = generateAuthToken(apiPath, timestamp);
return authToken.equals(expectedAuthToken);
}
}
```
这个代码定义了一个 `AuthUtils` 类,其中包含了两个方法:
- `generateAuthToken(apiPath: String, timestamp: long): String`:根据 API 路径和当前时间戳生成鉴权令牌。这个方法使用了 SHA-256 哈希算法来加密 API 路径、时间戳和你指定的秘钥。
- `verifyAuthToken(authToken: String, apiPath: String, timestamp: long): boolean`:验证传入的鉴权令牌是否正确。这个方法会重新计算一个鉴权令牌,然后将其与传入的鉴权令牌进行比较。
你可以在调用 API 的时候,将生成的鉴权令牌添加到 HTTP 请求头中,例如:
```
Authorization: Bearer <your_auth_token>
```
然后在服务器端,通过调用 `verifyAuthToken` 方法来验证这个鉴权令牌是否正确。如果验证成功,就说明这个请求是合法的。
阅读全文