How do I create an encrypted password in MATLAB?
6 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
MathWorks Support Team
il 12 Gen 2012
Modificato: MathWorks Support Team
il 27 Mar 2023
I am writing a set of MATLAB scripts that communicate with a database. I need to prompt the user for a password to get into the database. Currently, when the user enters the password you can actually see the password as the user is typing. Is there a way to get a character (such as *) to appear on the display instead of letters/numbers while the user is entering the password?
Risposta accettata
MathWorks Support Team
il 19 Mag 2023
Modificato: MathWorks Support Team
il 27 Mar 2023
Currently, you cannot have letters or numbers appear as particular characters in MATLAB. This has been forwarded to our development staff to be considered for a future version of MATLAB.
Please consider the following workarounds:
1. Use an ActiveX control
2. Set the foreground color to be the same as the background color, the typing will not be visible.
h = uicontrol('Style','Edit','ForeGroundColor',[.75 .75 .75]);
3. Use a font that does not appear as normal letters.
h = uicontrol('Style','Edit','Fontname','symbol');
4. A file exchange submission that replaces the characters typed with asterisks can be found in the following link:
https://www.mathworks.com/matlabcentral/fileexchange/8499-login
Also, keep in mind if you are creating an application that will be used on a number of different platforms you will need to use a font name particular for each platform.
See the following as a possible MATLAB code workaround:
function passwd_test
u = uicontrol('style','edit','enable','inactive','backgroundcolor','w',...
'units','norm',...
'position',[.1 .1 .5 .1],...
'tag','edit')
u = uicontrol('style','text','enable','inactive','backgroundcolor','w',...
'units','norm',...
'position',[.1 .25 .5 .1],...
'tag','text')
set(gcf,'keypressfcn', {@handle_passwd})
function handle_passwd(h,eventData)
CK = get(gcf,'currentkey');
h_disp = findobj(gcbf,'tag','text');
h_asterix = findobj(gcbf,'tag','edit');
if gco == h_asterix,
str = get(h_disp,'string');
if strcmp(CK,'backspace'),
% Do something here if the backspace key was pressed
if length(str) > 1,
str = str(1:end-1);
end
elseif strcmp(CK,'space')
str = [str,' '];
else
str = [str,CK];
end
set(h_disp,'string',str);
set(h_asterix,'string',char(ones(1,length(str))*double('*')));
end
0 Commenti
Più risposte (0)
Vedere anche
Categorie
Scopri di più su MATLAB Compiler in Help Center e File Exchange
Prodotti
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!