【问题标题】:How to encrypt or tokenize a username and date token?如何加密或标记用户名和日期标记?
【发布时间】:2012-02-20 21:10:23
【问题描述】:

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

【问题讨论】:

  • 请将其重新命名为问题。

标签: java .net token url-parameters


【解决方案1】:

我想分享我在进行更多研究后找到的解决方案。 我选择了一种非常简单的基于对称 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] );
    }

【讨论】:

    【解决方案2】:

    您的建议非常简单,不需要包含 Java 和 .NET 已经提供的技术之外的技术。 只需构建一个 HTTP 请求,将其发送到正确的 URL,然后监听响应。

    类引用

    如果您认为自己会做更多这样的事情,或者数据变得更加频繁、复杂或结构化,我强烈推荐使用无处不在的SOAPWikipedia 协议以实现可扩展性和模块化。

    【讨论】:

    • 连接不是问题。我应该使用什么将用户名和日期参数编码/解码为单个令牌,该令牌将作为 url 参数发送。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-10-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多