用java写一个秘钥为qwe,有效时间为10分钟的url视频防盗链生成并进行验证
时间: 2023-06-25 07:03:59 浏览: 159
java web写的验证码生成和验证
5星 · 资源好评率100%
下面是一个简单的 Java 代码示例,用于生成和验证带有防盗链的视频 URL:
```java
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.Date;
import java.util.Formatter;
public class VideoUrlGenerator {
private static final String SECRET_KEY = "qwe"; // 秘钥
private static final long EXPIRATION_TIME_MILLIS = 10 * 60 * 1000; // 有效时间,单位为毫秒
public static String generateUrl(String videoId) throws NoSuchAlgorithmException {
long timestamp = new Date().getTime();
String signature = generateSignature(videoId, timestamp);
String url = "https://example.com/videos/" + videoId + "?ts=" + timestamp + "&sig=" + signature;
return url;
}
public static boolean validateUrl(String url) throws NoSuchAlgorithmException {
String[] parts = url.split("\\?");
String queryString = parts[1];
String[] params = queryString.split("&");
String videoId = params[0].substring(3);
long timestamp = Long.parseLong(params[1].substring(3));
String signature = params[2].substring(4);
long now = new Date().getTime();
if (now - timestamp > EXPIRATION_TIME_MILLIS) {
return false;
}
String expectedSignature = generateSignature(videoId, timestamp);
return expectedSignature.equals(signature);
}
private static String generateSignature(String videoId, long timestamp) throws NoSuchAlgorithmException {
String data = videoId + timestamp + SECRET_KEY;
MessageDigest sha1 = MessageDigest.getInstance("SHA1");
byte[] signatureBytes = sha1.digest(data.getBytes());
Formatter formatter = new Formatter();
for (byte b : signatureBytes) {
formatter.format("%02x", b);
}
String signature = formatter.toString();
formatter.close();
return signature;
}
}
```
在上面的代码中,`generateUrl` 方法用于生成带有防盗链的视频 URL,`validateUrl` 方法用于验证 URL 是否有效。秘钥为 `qwe`,有效时间为 10 分钟,可以通过修改 `SECRET_KEY` 和 `EXPIRATION_TIME_MILLIS` 常量来进行调整。
下面是一个示例程序,演示如何使用上述方法生成和验证视频 URL:
```java
import java.security.NoSuchAlgorithmException;
public class Main {
public static void main(String[] args) throws NoSuchAlgorithmException {
String videoId = "12345";
String url = VideoUrlGenerator.generateUrl(videoId);
System.out.println("Generated URL: " + url);
boolean isValid = VideoUrlGenerator.validateUrl(url);
System.out.println("URL is valid: " + isValid);
}
}
```
在上面的示例程序中,我们使用 `12345` 作为视频的 ID,生成带有防盗链的视频 URL,并验证该 URL 是否有效。
阅读全文