【发布时间】:2012-05-14 07:38:31
【问题描述】:
我的 .jsp 页面上有一个表单,它将密码发送回服务器。
<form name="login" action="j_security_check" method="post">
<input type="text" name="j_username">
<input type="password" name="j_password">
<input type="submit" name="Login"> </form>
我想在处理 j_password 之前对其进行一些处理。 以前,我通过调用执行类似于以下操作的函数,通过一些处理代码实现 JavaScript 来做到这一点:
<script type="text/javascript" src="sha256.js">
<script> function hash() { document.login.j_password.value = '@' +
sha256_digest(document.login.j_password.value); } </script>
...
...
<input type="submit" value="Login" onClick="hash()"> </form>
现在,我正在尝试实现类似的功能,但我不使用 JavaScript,而是尝试使用 Java。我的 .java 的主要目的是加载 public.key,获取 j_password,执行加密,并将 j_password 替换为其加密形式。
// RSA.java Pseudocode
1) Get string from textbox "j_password"
2) Load public key from public.key
3) Perform encryption on j_password with key
4) Load cipher to textbox "j_password"
但是,我看到的大多数示例都实现了“”调用,但这给我的印象是它会在页面加载时执行,而不是在单击登录按钮时执行。我还注意到我可以使用 javac 将其编译为 .class 并将其加载为“”,但是可以使用此方法修改 j_password 的输入吗?虽然它是一个 .jsp 并且我可以使用“”直接实现 Java,但我认为它在当前的 JSP 标准中是不可接受的。有没有人有任何建议或想法可以为我指明正确的方向?
谢谢。
【问题讨论】:
-
只是一个想法:加密密码是因为您不希望通过网络将原始密码传递给服务器。如果您在服务器端加密密码,那么它违背了目的。
-
是的,因此我想知道是否有办法在客户端提交之前进行此加密,但使用 Java 来完成。
-
在典型的 Java Web 应用程序中,您在 Java 上编写的任何内容都会在服务器端执行。所以javascript是你唯一的选择。
-
哦该死的,我想我得更深入地挖掘替代方案。虽然我的印象是 Java 小程序可以使用 JVM 运行客户端。
-
您可能想要为有帮助的答案投票并接受更可能是您想要的解决方案的答案。