Initial commit.
This commit is contained in:
62
lib/perl5/Selima/Encrypt.pm
Normal file
62
lib/perl5/Selima/Encrypt.pm
Normal file
@@ -0,0 +1,62 @@
|
||||
# Selima Website Content Management System
|
||||
# Encrypt.pm: The simple symmetric encrypter/decrypter.
|
||||
|
||||
# Copyright (c) 2004-2018 imacat.
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
# Author: imacat <imacat@mail.imacat.idv.tw>
|
||||
# First written: 2004-09-26
|
||||
|
||||
package Selima::Encrypt;
|
||||
use 5.008;
|
||||
use strict;
|
||||
use warnings;
|
||||
use base qw(Exporter);
|
||||
use vars qw(@EXPORT @EXPORT_OK);
|
||||
BEGIN {
|
||||
@EXPORT = qw(encrypt decrypt);
|
||||
@EXPORT_OK = @EXPORT;
|
||||
# Prototype declaration
|
||||
sub encrypt($);
|
||||
sub decrypt($);
|
||||
}
|
||||
|
||||
use Crypt::Rijndael qw();
|
||||
use MIME::Base64 qw(encode_base64 decode_base64);
|
||||
|
||||
use vars qw($cipher);
|
||||
$cipher = new Crypt::Rijndael(decode_base64("MDkxcTc3dGNvMkRZTTYxM0dqRmZ2R2xvQmNLcUZkNVo="));
|
||||
|
||||
# This use symmetric encryption/decryption. It is not safe.
|
||||
# Nothing is exported. Use it by the full package name.
|
||||
|
||||
# encrypt: Encrypt
|
||||
sub encrypt($) {
|
||||
local ($_, %_);
|
||||
$_ = $_[0];
|
||||
$_ = length($_) . " " . $_;
|
||||
# Pad with US-ASCII printable characters
|
||||
$_ .= chr(32 + int rand 95) while length($_) % 16 != 0;
|
||||
return encode_base64($cipher->encrypt($_));
|
||||
}
|
||||
|
||||
# decrypt: Decrypt
|
||||
sub decrypt($) {
|
||||
local ($_, %_);
|
||||
$_ = $cipher->decrypt(decode_base64($_[0]));
|
||||
s/^(\d+) //;
|
||||
return substr $_, 0, $1;
|
||||
}
|
||||
|
||||
return 1;
|
||||
Reference in New Issue
Block a user