0

我在下面有一个非常简单的示例来尝试说明我想要做什么。我的 Java 类“CommonUtils”有一个加密和解密字符串的方法。我想在将 logonuidfield 和 logonpassfield 写入 cookie 之前对其进行加密。我知道直接从 Javascript 调用 CommonUtils.xorEncode(~) 是不可能的,但是是否可以解决这些字段的值在写入 cookie 之前通过 CommonUtils.xorEncode(~) 传递的方法?

我不想用javascript编写加密方法。我希望它由 Java 类完成。我的猜测是,如果不使用 LiveConnect 或类似的东西,我想要做的事情是不可能的。

提前致谢。

<%@ page import="package.CommonUtils" %>

<HTML>
<SCRIPT LANGUAGE=JavaScript>
function setCookies() {
    var email = document.getElementById("logonuidfield").value;
    var password = document.getElementById("logonpassfield").value;

    writeCookie("EmailText",email);
    writeCookie("PasswordText",password);      
}

function writeCookie(name, value) {
    document.cookie = name + "=" + escape(value);
}
</script>

<body>
<tr>
    <td>
        <%  
            String message = "This is a test message.";

            out.println("<Label>This is the original message: " + message + "</Label><br>");
            out.println("<Label>Hex before encrypting       : " + CommonUtils.printStringHex(message)  + "</Label><br>");
            message = CommonUtils.xorEncode(message);
            out.println("<Label>Hex after encrypting        : " + CommonUtils.printStringHex(message) + "</Label><br>");
            message = CommonUtils.xorDecode(message);
            out.println("<Label>Hex after decrypting        : " + CommonUtils.printStringHex(message) + "</Label><br>");
            out.println("<Label>This is the final message   : " + message + "</Label><br>");
        %>
    </td>
</tr>
<FORM name="logonForm" id="logonForm" autocomplete="off" onsubmit="setCookies()" method="post" action="" >
    <li>                                    
        <input type="text" id="logonuidfield" placeholder="email address*" style="width: 100%" name="j_user" type="email" value="" title="Email address *"/>
    </li>
    <li>
        <input type="password" id="logonpassfield" placeholder="Password*" style="width: 100%" name="j_password" />
    </li>
    <li>
        <input type="submit" value="Log in" name="uidPasswordLogon"/>
    </li>
</form>

4

1 回答 1

0

请注意您的请求/响应周期:

  1. 客户端使用表单检索 URL

  2. 服务器编译jsp并生成html输出

  3. 客户端看到空表单,不存在与服务器的连接,这是“浏览器世界”。

  4. 客户端提交表单,因此您将表单数据发布到服务器并保存 cookie。此时您无法从服务器运行 java 代码,它仍然是“浏览器世界”。

  5. 服务器接收请求并执行 jsp/servlet/在您的表单操作中映射的任何内容,这里您的客户端已经发送了表单数据。

  6. 服务器处理并发送响应。

  7. 在这里,客户端再次收到来自服务器的响应,并且可以将服务器处理的内容保存到 cookie 中。

所以,你不能只在第 4 步的服务器端做一些 java 密码,因为你要到第 7 步才能得到答案......

也许我们需要更多关于你想要做什么的具体信息......

于 2013-06-26T13:29:45.690 回答