第2个回答 推荐于2018-05-09
设置edit控件的KeypressFcn属性,通过GetAuthentication的回调函数,使得每输入一个字符后马上用*号代替。
回调函数的代码:
function PasswordKeyPress(hObject,event)
hAuth = getappdata(0,'hAuth');
password = get(hAuth.ePassword,'UserData');
switch event.Key
case 'backspace'
password = password(1:end-1);
case 'return'
uiresume;
return;
otherwise
password = [password event.Character];
end
set(hAuth.ePassword,'UserData',password)
————————————————————————————————————
或者调用java实现密码框
function passwordfield
figure('menu','none','pos',[300 400 200 200]);
jPass = javax.swing.JPasswordField;
hPass = javacomponent(jPass,[10 10 100 20]);
hText = uicontrol('style','text','pos',[30 40 60 40]);
uicontrol('pos',[120 10 50 20],'string','OK','callback',{@check,hPass, hText});
function check(~, ~, hPass, hText)
pswd = hPass.text;
if strcmp(pswd, '123')
set(hText,'string','密码正确')
else
set(hText,'string','密码错误')
end
不过上边的密码是明文的,只要有人可以看到这个文件的内容就能知道密码,所以一般需要个加密方法来做加密(例如MD5,SHA之类的)
不过其实就算做了加密方法,如果可以修改上述代码,照样可以很轻松绕过密码
所以可能需要把文件转化为p文件或者用其他手段编译,才能更加实际的实现密码访问功能。