通过Java类实现HTML表单加密
下面我有一个非常简单的例子来说明我想做什么。我的Java类“CommonUtils”有一个加密和解密字符串的方法。我想在将logonuidfield和logonpassfield写入cookie之前对它们进行加密。我知道直接从Javascript调用CommonUtils.xorEncode(~)是不可能的,但是有没有可能在编写cookie之前通过CommonUtils.xorEncode(~)传递这些字段的值 我不想用javascript编写加密方法。我更希望它是由Java类完成的。我猜如果不使用LiveConnect或类似的工具,我想做的事情是不可能的 提前谢谢通过Java类实现HTML表单加密,java,javascript,html,encryption,Java,Javascript,Html,Encryption,下面我有一个非常简单的例子来说明我想做什么。我的Java类“CommonUtils”有一个加密和解密字符串的方法。我想在将logonuidfield和logonpassfield写入cookie之前对它们进行加密。我知道直接从Javascript调用CommonUtils.xorEncode(~)是不可能的,但是有没有可能在编写cookie之前通过CommonUtils.xorEncode(~)传递这些字段的值 我不想用javascript编写加密方法。我更希望它是由Java类完成的。我猜如果不
<%@ 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>
函数setCookies(){
var email=document.getElementById(“logonuidfield”).value;
var password=document.getElementById(“logonpassfield”).value;
writeCookie(“EmailText”,电子邮件);
writeCookie(“密码文本”,PasswordText);
}
函数writeCookie(名称、值){
document.cookie=名称+“=”+转义(值);
}
请注意您的请求/响应周期:
也许我们需要更具体的信息来了解您想要做什么…您到底想要实现什么?你的代码现在出了什么问题?代码本身没有加密cookie中的密码。我不确定如何通过Java方法将密码输入javascript。请从
CommonUtils
发布相关信息。操作是否到位或返回新字符串?这些方法只返回一个字符串,该字符串基本上是作为参数传递的字符串的加密版本:公共静态字符串xorEncode(字符串数据){…返回新字符串(encryptedString);}
xorEncode和xorEncode方法是什么样子的?如果密钥被重用,那么XOR加密很容易被破坏。另外,XOR加密和解密应该是相同的操作。谢谢你的回答。我不确定提供的信息是否完全足够。我正在尝试为站点创建一个登录表单,以便登录表单将用户名和密码作为cookie记住。但是,我不希望密码以明文形式存储在cookie中。我也不希望加密方法是javascript方法,因为它可以很容易地被查看和黑客攻击。好的,所以您并不真正关心在通信通道中对密码进行加密(假设您将使用ssl(https))。如果是这种情况,在接收到用户/pwd后在服务器上生成加密cookie(步骤6),并在步骤7发送响应。因此,从技术上讲,您将在提交表单后一步保存cookie。可以这样想,这样您就知道只有在成功登录后才能存储cookie。在登录表单上,您可以验证是否存在cookie,如果存在cookie,则直接将其提交到服务器。