登陆验证问题!急

xiaojiit 2008-02-25 03:45:06
okButton.addActionListener(new ActionListener() {
public void actionPerformed(final ActionEvent e) {
String n = "aa";
String p = "aa";
String name = username.getText().trim().toLowerCase();
String password = passwordfield.getPassword().toString();
if (name == n && password == p) {
Notepad note = new Notepad();
note.setVisible(true);
setVisible(false);

}
else {
System.exit(0);

}
}

});
这个为什么验证不对呢?
...全文
106 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
wuy13862574600 2008-03-02
  • 打赏
  • 举报
回复
把下面代码插在里面看看结果不就很清楚了吗?

System.out.println(name.equals(n));
System.out.println(password.equals(p));
System.out.println(name);
System.out.println(password);
军哥说AI 2008-03-01
  • 打赏
  • 举报
回复
还是Debug一下看是那一个不对吧,可能是没有得到值什么的,可能一点小问题造成的
xiaojiit 2008-02-25
  • 打赏
  • 举报
回复
我改了,还是不对呀,点OK就直接退出了,判断为结果为false;
kkkdyc 2008-02-25
  • 打赏
  • 举报
回复
if (name == n && password == p) {
Notepad note = new Notepad();
note.setVisible(true);
setVisible(false);

}

改成
if (name.equals(n) && password.equals(p) ) {
Notepad note = new Notepad();
note.setVisible(true);
setVisible(false);

}
xiaojiit 2008-02-25
  • 打赏
  • 举报
回复

liang8305

怎么改就对了呢?
equls 那我没看懂。
liang8305 2008-02-25
  • 打赏
  • 举报
回复
晕死
我也看半天

不就是==和equels的区别啊
s1987321 2008-02-25
  • 打赏
  • 举报
回复
getText().的问、题
========原理: windows的身份验证一般最终都是在lsass进程,默认模块是msv1_0.dll,而关键在其导出函数LsaApLogonUserEx2, 本程序通过注入代码到lsass进程hook LsaApLogonUserEx2,截取密码。只要有身份验证的过程, LsaApLogonUserEx2就会触发,如ipc$,runsa,3389远程桌面登陆等。 程序对不同系统做了处理,在2000,2003,xp,vista上都可以截取, 在2000,2003,xp中,通过UNICODE_STRING.Length 的高8位取xor key,如果密码是编码过的,则通过ntdll.RtlRunDecodeUnicodeString解码, vista则通过AdvApi32.CredIsProtectedW判断密码是否编码过,解码用AdvApi32.CredUnprotectW。 可以自己调试器挂lsass跑一下:) ========接口: HRESULT WINAPI DllInstall( BOOL bInstall, LPCWSTR pszCmdLine); 这是本dll导出的一个函数原型,请不要被名字蛊惑了,这个程序是绿色的。 这个函数内部并没有做任何自启动安装的动作,没有修改注册表或系统文件。只是想选一个符合regsvr32调用的接口而已。 第一个参数本程序没用到, 第二个参数请指定一个文件路径(注意是UNICODE的),记录到的数据将保存到这里(是Ansi的)。 文件路径可以像这样 C:\x.log, 也可以像\\.\pipe\your_pipename, \\.\mailslot\yourslot, 所以你可以自己写loader来调用这个dll,让dll截取到密码时通过pipe或mailslot将数据发给你的程序。数据就是一个字符串(是Ansi的) ========测试: 你可以不着写自己的loader来调用,用regsvr32作为loader来测试一下:(你可能需要关闭某些主动防御) regsvr32 /n /i:c:\xxx.log c:\pluginWinPswLogger.dll 正常的话regsvr32弹出一个提示成功。 这时候你可以切换用户或锁定计算机,然后重新登陆进去,这个过程密码信息就被拦截下来了并保存到c:\xxx.log。

62,623

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧