[英]Nginx secure link & java
我有一個項目,我需要從服務器流式處理vid,並且我正在使用nginx來執行它,還使用spring mvc開發了webapp,並使用tomcat來包含它。
這個怎么運作:
Java應用程序會創建md5哈希鏈接並將其發送給客戶端,他可以發出請求,客戶端向nginx服務器發出帶有哈希參數的請求,nginx服務器會檢查哈希值並專門處理為不。
這是創建哈希鏈接的Java代碼:
public static void main(String[] args) throws ParseException, NoSuchAlgorithmException {
String fileName = "bbb.mp4";
Date date = new Date(System.currentTimeMillis());
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
int year = calendar.get(Calendar.YEAR);
int month = calendar.get(Calendar.MONTH);
String monthName = getMonthForInt(month);
int day = calendar.get(Calendar.DAY_OF_MONTH);
int hour = calendar.get(Calendar.HOUR_OF_DAY);
int min = calendar.get(Calendar.MINUTE);
System.out.println("year " +year +", month "+ month +",day " +day + ", hour " +hour +" min "+ min);
String str = monthName +" "+ day+" "+year+" "+hour+":"+min+":52.454 UTC";
SimpleDateFormat df = new SimpleDateFormat("MMM dd yyyy HH:mm:ss.SSS zzz");
Date newDate = df.parse(str);
long epoch = date.getTime();
System.out.println(epoch);
String input = epoch +"/hls/"+fileName+" enigma";
MessageDigest md = MessageDigest.getInstance("MD5");
md.update(input.getBytes());
byte[] enc = md.digest();
String md5Sum = new sun.misc.BASE64Encoder().encode(enc);
String hash = md5Sum.substring( 0,md5Sum.length() -2);
String link = "http://tutorme.ae/hls/"+fileName+"?md5="+hash+"&expires="+epoch;
System.out.println(link);
}
輸出應該是這樣的:
http://tutorme.ae/hls/bbb.mp4?md5=D3U9uEtwHcgyNL3BeyfLsw&expires=1490178647610
因此此代碼可以工作50%,其他50%可以使鏈接更苗條:
http://tutorme.ae/hls/bbb.mp4?md5=26k/bhvQP6JC1ehR+XmzuA&expires=1490178663810
我不確定為什么會這樣做,線索會有所幫助
謝謝
抱歉,我只是通過添加以下代碼行來修復它:
hash = hash.replace("/", "_");
在最后一行。 我不知道實際上是因為Linux命令行中的哈希值與Java有所不同。 如果有人可以解釋它會很好
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.