如何加密或标记用户名和日期标记?

时间:2012-01-27 22:11:49

标签: java .net token url-parameters

需要通过url参数将标记化(加密)的用户名和日期从webapp A传递到webapp B.像http://webappB?username=userA&timestamp=13445341313这样的内容应该以http://webappB?token=geufjsggtj26hjdhcjre87klj3的形式发送。接收webapp B应该能够将令牌解码为原始参数。 哪种技术提供了适用于.NET和Java的简单解决方案?感谢

2 个答案:

答案 0 :(得分: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] );
    }

答案 1 :(得分:-1)

您所建议的内容非常简单,并且不需要包含Java和.NET已经提供的技术。 只需构建一个HTTP请求,将其发送到正确的网址,然后听取响应。

课程参考

如果您认为自己会做更多这方面的工作,或者数据变得更频繁,更复杂或更有条理,我强烈推荐无处不在的SOAPWikipedia协议,以实现可扩展性和模块化。