Yes it's possible to store passwords in a dll, but it's not really helpful... You cannot as easily read the password in the file, but a simple $dll call in mIRC might reveal the password. You could let the only action the dll can do be a check function: the $dll only returns $true or $false for a given nick/password combination. This would require that users try all different combinations until one returns $true, and that takes too much time if the password is somewhat safe ('god', 'blah' and
my-pet's-name are NOT safe) (combine with option 2 below) Do remember that each change in the passwords requires you to recompile your dll and send it to everyone again.
Since I guess it's for some auto-op or -voice script for different users, I guess there's a few choices you can make:
1 -> If only you are allowed to have the passwords, don't give them around and do the checking (and opping) yourself. You'll probably want a shell or a 24/7 internet connection

2 -> Only give the $md5(password $nick) value to your op's, and have the user /msg
op PASS $me $md5(password $me) to the op. This way, the OP will know what to send to get whatever $nick got for logging in (but since he's op I guess he can already do that anyway) but he will NOT know the actual password that the user chose.
an example:
parties: You, Op, User1
User1 chose pass blah
You make $md5(blah User1) = 6f1ed002ab...etc and send that to Op for his script
Op's script: On @10:TEXT:PASS *:?:if (($nick == User1) && ($2 == 6f1ed002ab...etc)) { voice #chan $nick }
User1 uses /login blah where /login looks like this alias login { .msg Op PASS $md5($1 $me) }
Op won't know that User1 has chose blah as pass, but that's it.
3 -> Let Op forward the login message to you, then you tell ok or not, somewhat of a combination of 1 and 2. The $rand number makes sure the $md5 value is never the same, for added security you can keep that number in a list and refuse a password attempt using that number again...
alias login { var %r = $rand(1,1000000000) | .msg Op PASS $nick %r $md5($1 $nick %r) }
Op: on @10:TEXT:PASS *:?:{ .msg You REQPASS $2- }
You: On @100:TEXT:REQPASS *:?:{ .msg $nick ANSWER: $iif($4 == $md5($getpass($2) $2 $3),OK,NOK) $2 }
Hope this helps somewhat, you could also put other stuff in the $md5 encoding ($address, $chan, $date(yyyy/mm), ...) just remember to also let the users update their login script accordingly. The $date stuff means you need to supply new passwords to your op's every month ofcourse...
PS: sorry for the long post