# 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 # 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;