<?php
namespace vendor; class EncryptionTool{ public static function enAES($originTxt, $key): string{ return base64_encode(openssl_encrypt($originTxt, 'AES-128-ECB',$key, OPENSSL_RAW_DATA)); } public static function deAES($originTxt, $key): string{ $data = base64_decode($originTxt); return openssl_decrypt($data,'AES-128-ECB',$key, OPENSSL_RAW_DATA); } }
class DES {
protected $method;
protected $key;
protected $output;
protected $iv;
protected $options; const OUTPUT_NULL = ''; const OUTPUT_BASE64 = 'base64'; const OUTPUT_HEX = 'hex';
public function __construct($key, $method = 'DES-ECB', $output = '', $iv = '', $options = OPENSSL_RAW_DATA | OPENSSL_NO_PADDING) { $this->key = $key; $this->method = $method; $this->output = $output; $this->iv = $iv; $this->options = $options; }
public function encrypt($str) { $str = $this->pkcsPadding($str, 8); $sign = openssl_encrypt($str, $this->method, $this->key, $this->options, $this->iv); if ($this->output == self::OUTPUT_BASE64) { $sign = base64_encode($sign); } else if ($this->output == self::OUTPUT_HEX) { $sign = bin2hex($sign); } return $sign; }
public function decrypt($encrypted) { if ($this->output == self::OUTPUT_BASE64) { $encrypted = base64_decode($encrypted); } else if ($this->output == self::OUTPUT_HEX) { $encrypted = hex2bin($encrypted); } $sign = @openssl_decrypt($encrypted, $this->method, $this->key, $this->options, $this->iv); $sign = $this->unPkcsPadding($sign); $sign = rtrim($sign); return $sign; }
private function pkcsPadding($str, $blocksize) { $pad = $blocksize - (strlen($str) % $blocksize); return $str . str_repeat(chr($pad), $pad); }
private function unPkcsPadding($str) { $pad = ord($str{strlen($str) - 1}); if ($pad > strlen($str)) { return false; } return substr($str, 0, -1 * $pad); } }
define('RSA_PUBLIC', '-----BEGIN PUBLIC KEY----- MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCmkANmC849IOntYQQdSgLvMMGm 8V/u838ATHaoZwvweoYyd+/7Wx+bx5bdktJb46YbqS1vz3VRdXsyJIWhpNcmtKhY inwcl83aLtzJeKsznppqMyAIseaKIeAm6tT8uttNkr2zOymL/PbMpByTQeEFlyy1 poLBwrol0F4USc+owwIDAQAB -----END PUBLIC KEY-----');
define('RSA_PRIVATE','-----BEGIN PRIVATE KEY----- MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBAKaQA2YLzj0g6e1h BB1KAu8wwabxX+7zfwBMdqhnC/B6hjJ37/tbH5vHlt2S0lvjphupLW/PdVF1ezIk haGk1ya0qFiKfByXzdou3Ml4qzOemmozIAix5ooh4Cbq1Py6202SvbM7KYv89syk HJNB4QWXLLWmgsHCuiXQXhRJz6jDAgMBAAECgYAIF5cSriAm+CJlVgFNKvtZg5Tk 93UhttLEwPJC3D7IQCuk6A7Qt2yhtOCvgyKVNEotrdp3RCz++CY0GXIkmE2bj7i0 fv5vT3kWvO9nImGhTBH6QlFDxc9+p3ukwsonnCshkSV9gmH5NB/yFoH1m8tck2Gm BXDj+bBGUoKGWtQ7gQJBANR/jd5ZKf6unLsgpFUS/kNBgUa+EhVg2tfr9OMioWDv MSqzG/sARQ2AbO00ytpkbAKxxKkObPYsn47MWsf5970CQQDIqRiGmCY5QDAaejW4 HbOcsSovoxTqu1scGc3Qd6GYvLHujKDoubZdXCVOYQUMEnCD5j7kdNxPbVzdzXll 9+p/AkEAu/34iXwCbgEWQWp4V5dNAD0kXGxs3SLpmNpztLn/YR1bNvZry5wKew5h z1zEFX+AGsYgQJu1g/goVJGvwnj/VQJAOe6f9xPsTTEb8jkAU2S323BG1rQFsPNg jY9hnWM8k2U/FbkiJ66eWPvmhWd7Vo3oUBxkYf7fMEtJuXu+JdNarwJAAwJK0YmO LxP4U+gTrj7y/j/feArDqBukSngcDFnAKu1hsc68FJ/vT5iOC6S7YpRJkp8egj5o pCcWaTO3GgC5Kg== -----END PRIVATE KEY-----');
$password='xiaodisec';
echo "原始数据:$password". "<br/>"; echo "MD5加密后:".md5($password). "<hr/>";
echo "原始数据:$password". "<br/>"; echo "BASE64编码后:".base64_encode($password). "<hr/>";
echo "原始数据: " . $password . "<br/>"; $data = EncryptionTool::enAES($password, "1234567891234567"); echo "AES加密后: " . $data . "<hr/>";
echo "原始数据:$password". "<br/>"; $key = 'key123456'; $iv = 'iv123456';
echo 'DES CBC 加解密:'; $des = new DES($key, 'DES-CBC', DES::OUTPUT_BASE64, $iv); echo $base64Sign = $des->encrypt($password); echo "<br>";
echo "<hr>";
echo "原始数据:$password". "<br/>"; echo 'DES ECB 加解密:'; $des = new DES($key, 'DES-ECB', DES::OUTPUT_BASE64); echo $base64Sign = $des->encrypt($password); echo "<hr>";
$public_key = openssl_pkey_get_public(RSA_PUBLIC); if(!$public_key){ die('公钥不可用'); }
$return_en = openssl_public_encrypt($password, $crypted, $public_key); if(!$return_en){ return('加密失败,请检查RSA秘钥'); } $eb64_cry = base64_encode($crypted); echo "RSA公钥加密数据:".$eb64_cry; echo "<br>";
$private_key = openssl_pkey_get_private(RSA_PRIVATE); if(!$private_key){ die('私钥不可用'); } $return_de = openssl_private_decrypt(base64_decode($eb64_cry), $decrypted, $private_key); if(!$return_de){ return('解密失败,请检查RSA秘钥'); } echo "RSA私钥解密数据:".$decrypted; echo "<hr>";
$private_key = openssl_pkey_get_private(RSA_PRIVATE); if(!$private_key){ die('私钥不可用'); } $return_en = openssl_private_encrypt($password, $crypted, $private_key); if(!$return_en){ return('加密失败,请检查RSA秘钥'); } $eb64_cry = base64_encode($crypted); echo "RSA私钥加密数据".$eb64_cry; echo "<br>";
$public_key = openssl_pkey_get_public(RSA_PUBLIC); if(!$public_key){ die('公钥不可用'); } $return_de = openssl_public_decrypt(base64_decode($eb64_cry), $decrypted, $public_key); if(!$return_de){ return('解密失败,请检查RSA秘钥'); } echo "RSA公钥解密数据:".$decrypted; echo "<hr>";
?>
|