需要通过 url 参数将标记化(加密)的用户名和日期从 webapp A 传递到 webapp B。像http://webappB?username=userA×tamp=13445341313 这样的东西应该作为http://webappB?token=geufjsggtj26hjdhcjre87klj3 发送。接收 webapp B 应该能够将令牌解码为原始参数。哪种技术提供了可用于 .NET 和 java 的简单解决方案?谢谢
问问题
2045 次
2 回答
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] );
}
于 2012-01-31T09:55:03.730 回答
-1
您的建议非常简单,不需要包含 Java 和 .NET 已经提供的技术之外的技术。只需构建一个 HTTP 请求,将其发送到正确的 URL,然后侦听响应。
类引用
- Java: HttpURLConnection甲骨文
- .NET:WebRequest MSDN
如果你认为你会做更多这样的事情,或者数据变得更加频繁、复杂或结构化,我强烈推荐无处不在的SOAP Wikipedia协议以实现可扩展性和模块化。
于 2012-01-27T23:05:31.183 回答