Encryption and Decryption In Perl

29 Jul, 2021
Crypt function in, Perl, is basically used to store sensitive data and passwords using ASCII characters as encrypted strings (this function encrypts the string). Strings can only be encrypted, they can not be decrypted in the same way as encryption is done.  
Syntax: $encyrpted_string = crypt $string, $salt;Arguments passed to the function:  
$string: it is the string that needs to be encrypted.
$salt: used for selecting an encrypted version from different variations.
Return Value: Function returns an encrypted string
Note: $salt variable can be the combination of any two characters from the below given set:  
['.', '/', 0..9, 'A'..'Z', 'a'..'z']
We can use/include more characters other than this given set of characters, this set is just used for the purpose of recommendation. First two characters in the encrypted string are stored as the salt character which can be used for later comparisons. We can even select the characters for salt by using rand function(random selection). We can observe /see large changes in the resulting / final encrypted string, if small changes are made in the $string or $salt.Example: Below is the example to illustrate the above mentioned crypt function for Encryption. 
Perl
#!usr/bin/perlprint "Content-type: text/html\n\n"; # Setting the password$password = 'geekforgeeks'; # Encrypting the password using crypt function$hidden = crypt $password, join "",          ('.', '/', 0..9, 'A'..'Z', 'a'..'z') [rand 64, rand 64]; print "$hidden \n"; $salt = substr ($hidden, 0, 2); # Taking user inputprint "Enter Your Password: \n";while (<STDIN>){    if ($hidden eq (crypt $_, $salt))    {        print "Successfully Logged In \n";        exit;    }    else    {        print "Entered Password is Incorrect \n";        print "Please Try Again: \n";    }}
Output:  
 
For decryption, the encrypted password in Perl needs to be decrypted using the MIME::Base64 module. For decrypting a string we can call or use decode_base64() function. A single argument in the form of the string is taken as the input by the function in order to return the decoded or decrypted data/password. Syntax:  
Use MIME::Base64; $decoded = decode_base64();  
Example: Given below is the example that illustrate the decryption process in Perl. 
Perl
#!/usr/bin/perluse strict;use warnings;use MIME::Base64; # Setting the passwordmy $password = "GeeksforGeeks"; # For encrypting the plaintext password# using crypt functionmy $encoded = crypt $password, join "",             ('.', '/', 0..9, 'A'..'Z', 'a'..'z') [rand 64, rand 64]; my $salt = substr ($encoded, 0, 2); # For decrypting the encrypted password# using base_64 modulemy $decoded = decode_base64($encoded);print "\n"; # For printing the Encrypted passwordprint "Encrypted Password :: $encoded\n"; # For printing the Decrypted passwordprint "Decrypted Password :: $decoded\n"; # For printing the password in PlainTextprint "Password In Plain Text :: $password\n";
Output:  
Let the cerulean loquacious warbler lead you to your treasure. 
kapoorsagar226
Perl
Perl
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
Perl Tutorial - Learn Perl With Examples
Perl | ne operator
Perl | Basic Syntax of a Perl Program
Perl | Opening and Reading a File
Perl | Decision Making (if, if-else, Nested–if, if-elsif ladder, unless, unless-else, unless-elsif)
Perl | File Handling Introduction
Perl | Writing to a File
Perl | Multidimensional Hashes
Perl | qw Operator
Perl | Data Types