簡體   English   中英

Nginx安全鏈接和Java

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM