Beefy Boxes and Bandwidth Generously Provided by pair Networks
Do you know where your variables are?
 
PerlMonks  

Re: prob w/ gatekeeper subroutine

by MidLifeXis (Monsignor)
on Sep 29, 2010 at 16:44 UTC ( #862654=note: print w/replies, xml ) Need Help??


in reply to prob w/ gatekeeper subroutine

This is not directly related to your problem, but may I suggest hashing your passwords?

if ($hasheduserpass{$euser} eq hashfunction($epass)) { ... }

Unless you need the unencrypted password elsewhere in the program (may I suggest, then, that you evaluate why you need it), you should not store your user's passwords in the clear. At least in my opinion.

Update: OTOH, if this is an assignment, as it appears it could be, hashing is probably not appropriate. Remember the above advice (and not just for passwords, but for any information that you only use for validation) once you get beyond classroom assignments.

--MidLifeXis

Replies are listed 'Best First'.
Re^2: prob w/ gatekeeper subroutine
by weglarz (Novice) on Sep 29, 2010 at 17:13 UTC

    Actually this is an assignment. Thanks for the responses. What is the difference between chop and chomp? I'm not exactly sure what you mean by hashing the passwords. Isn't that what I am doing here? I am putting the user name and password of each user inside the hash. And actually changing the operator to eq from == worked. The problem now is that my subroutine that adds a user and pass to the hash doesn't seem to be working. Here is the code:

    sub adduser { print("Please enter the admin password: "); $epass = <STDIN>; chop($epass); if($epass eq $adminpass) { print("Please enter the user you would like to add: "); $usertoadd = <STDIN>; print("Please enter the password for the user: "); $passtoadd = <STDIN>; $userpass{$usertoadd} = $passtoadd; print("That password has been added to the system\n"); } else { print("Wrong admin password\n"); } } print("Would you like to: \n"); print("1. Add new user\n"); print("2. Change admin password\n"); print("3. Enter the system\n"); $select = <STDIN>; if($select == 1) { &adduser; }

    Also the $adminpass is set to 'root'.

      By "hashing" MidLifeXis means crytopgree-phying your passwords using some algorithm. A similar conceptual-algorithmic method is used in what computer science calls "hash tables" via which perl implements the "hash" datatype in the underlying C code using arrays, since C does not have such a native datatype. But really this is a coincident of nomenclature, and if you have not been asked to do it, don't, it has nothing to do with perl hash syntax. Do:

      use strict; use warnings;

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://862654]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others scrutinizing the Monastery: (6)
As of 2020-02-28 20:34 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?
    What numbers are you going to focus on primarily in 2020?










    Results (127 votes). Check out past polls.

    Notices?