2012-01-27 60 views
1

需要通過url參數將標記化(加密)的用戶名和日期從webapp A傳遞到webapp B.像http://webappB?username=userA&timestamp=13445341313之類的東西應該作爲http://webappB?token=geufjsggtj26hjdhcjre87klj3發送。接收Web應用程序B應該能夠將令牌解碼爲原始參數。 哪種技術提供了可用於.NET和Java的簡單解決方案?謝謝如何加密或標記用戶名和日期標記?

+0

請重新標題分成問題這一點。 – paislee 2012-01-27 22:54:00

回答

-1

你提出的建議非常簡單,不需要包括Java和.NET已經提供的技術。 只需構建一個HTTP請求,將其發送到正確的URL並監聽響應。

類引用

如果你認爲你會做更多的這種,或者數據變得更加頻繁,複雜或結構化,我強烈建議無處不在的SOAPWikipedia協議的可擴展性和模塊化。

+0

連接不是問題。我應該使用什麼來將用戶名和日期參數編碼/解碼爲單個標記,並將其作爲url參數發送。 – 2012-01-28 08:15:34

0

我想分享我經過一些更多研究後找到的解決方案。 我選擇了一種非常簡單的基於XOR的對稱加擾方法,以支持跨平臺使用加密。

一段代碼說,超過一千字:

// webappA, encode URL parameter 
    byte[] userBytes = username.getBytes("UTF-8"); 
    byte[] keyBytes = key.getBytes("UTF-8"); 
    //XOR scramble 
    byte[] encrypted = new byte[userBytes.length]; 
    for(int i = 0; i < userBytes.length; i++){ 
     encrypted[i] = (byte)(userBytes[i]^keyBytes[i % keyBytes.length]); 
    } 

    BASE64Encoder encoder = new BASE64Encoder(); 
    String encoded = encoder.encode(encrypted); 

// webappB, decode the parameter 
    BASE64Decoder decoder = new BASE64Decoder(); 
    byte[] decoded = decoder.decodeBuffer(encoded); 
    //XOR descramble 
    byte[] decrypted = new byte[decoded.length]; 
    for(int i = 0; i < decoded.length; i++){ 
     decrypted[i] = (byte)(decoded[i]^keyBytes[i % keyBytes.length]); 
    }