Perl 加密和解密
Perl中的 Crypt 函数,基本上是用来存储敏感数据和使用ASCII字符的加密字符串的密码(该函数对字符串进行加密)。字符串只能被加密,不能以与加密相同的方式解密。
语法: $encyrpted_string = crypt $string, $salt
传给函数的参数:
* $string: 是需要被加密的字符串。
* $salt: 用于从不同的变化中选择一个加密的版本。
返回值: 函数返回一个加密的字符串
注意: $salt 变量可以是以下两个字符的组合:
['.', '/', 0..9, 'A'..'Z', 'a'..'z']
除了这组给定的字符,我们还可以使用/包括更多的字符,这组字符只是用于推荐的目的。加密字符串中的前两个字符被存储为盐字符,可用于以后的比较。我们甚至可以通过使用 rand函数 (随机选择)来选择盐的字符。如果 $string或$salt 有微小的变化,我们可以观察/看到结果/最终加密字符串的巨大变化。
例子: 下面是说明上述加密函数的例子。
#!usr/bin/perl
print "Content-type: text/html\n\n";
# Setting the password
password = 'geekforgeeks';
# Encrypting the password using crypt functionhidden = crypt password, join "",
('.', '/', 0..9, 'A'..'Z', 'a'..'z') [rand 64, rand 64];
print "hidden \n";
salt = substr (hidden, 0, 2);
# Taking user input
print "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";
}
}
输出:
在Perl中解密
对于解密,Perl中的加密密码需要使用 MIME::Base64 模块进行解密。为了解密一个字符串,我们可以调用或使用 decode_base64() 函数。一个字符串形式的参数被作为函数的输入,以便返回解码或解密的数据/密码。
语法:
使用MIME::Base64;
$decoded = decode_base64();
例子: 下面的例子说明了Perl中的解密过程。
#!/usr/bin/perl
use strict;
use warnings;
use MIME::Base64;
# Setting the password
my password = "GeeksforGeeks";
# For encrypting the plaintext password
# using crypt function
myencoded = crypt password, join "",
('.', '/', 0..9, 'A'..'Z', 'a'..'z') [rand 64, rand 64];
mysalt = substr (encoded, 0, 2);
# For decrypting the encrypted password
# using base_64 module
mydecoded = decode_base64(encoded);
print "\n";
# For printing the Encrypted password
print "Encrypted Password ::encoded\n";
# For printing the Decrypted password
print "Decrypted Password :: decoded\n";
# For printing the password in PlainText
print "Password In Plain Text ::password\n";
输出: