当前位置: 首页 > news >正文

网站规划详细设计怎么写爱站官网

网站规划详细设计怎么写,爱站官网,邢台做移动网站报价,手机怎样做刷赞网站目录 一、可解密加解密算法 1、aes 加解密算法 2、旧3des加解密方法 3、新3des加解密方法 4、rsa公私钥加解密、签名验签方法 5、自定义加密算法1 6、自定义加密算法2 7、自定义加密算法3 二、不可解密加密算法 1、md5算法 2、crypt算法 3、sha1算法 5、hash 算…

目录

一、可解密加解密算法

1、aes 加解密算法

2、旧3des加解密方法

 3、新3des加解密方法

4、rsa公私钥加解密、签名验签方法

5、自定义加密算法1 

6、自定义加密算法2

7、自定义加密算法3

二、不可解密加密算法 

1、md5算法 

2、crypt算法

3、sha1算法

5、hash 算法

6、 password_hash算法


一、可解密加解密算法

1、aes 加解密算法

class AES {private $key;private $iv;public function __construct($key, $iv) {$this->key = $key;$this->iv = $iv;}public function encrypt($data) {$encrypted = openssl_encrypt($data, 'AES-128-ECB', $this->key, OPENSSL_RAW_DATA);return base64_encode($encrypted);}public function decrypt($encryptedData) {$decrypted = openssl_decrypt(base64_decode($encryptedData), 'AES-128-ECB', $this->key, OPENSSL_RAW_DATA);return $decrypted;}public function encryptCBC($data) {$encrypted = openssl_encrypt($data, 'AES-256-CBC', $this->key, OPENSSL_RAW_DATA, $this->iv);return base64_encode($encrypted);}public function decryptCBC($encryptedData) {$decrypted = openssl_decrypt(base64_decode($encryptedData), 'AES-256-CBC', $this->key, OPENSSL_RAW_DATA, $this->iv);return $decrypted;}
}
// 使用示例:
$key = '0123456789abcdef'; // 16字节长度的密钥
$iv = 'fedcba9876543210'; // 16字节长度的初始向量
$aes = new AES($key, $iv);
$data = 'Hello, World!';
$encryptedECB = $aes->encrypt($data);
echo 'AES-128-ECB加密后的数据:' . $encryptedECB . "\n";
$decryptedECB = $aes->decrypt($encryptedECB);
echo 'AES-128-ECB解密后的数据:' . $decryptedECB . "\n";
$encryptedCBC = $aes->encryptCBC($data);
echo 'AES-256-CBC加密后的数据:' . $encryptedCBC . "\n";
$decryptedCBC = $aes->decryptCBC($encryptedCBC);
echo 'AES-256-CBC解密后的数据:' . $decryptedCBC . "\n";

2、旧3des加解密方法

<?php
class Encrypt_3DES
{//加密秘钥,private $_key;private $_iv;public function __construct($key, $iv){$this->_key = $key;$this->_iv = $iv;}/*** 对字符串进行3DES加密* @param string 要加密的字符串* @return mixed 加密成功返回加密后的字符串,否则返回false*/public function encrypt3DES($str){$td = mcrypt_module_open(MCRYPT_3DES, "", MCRYPT_MODE_CBC, "");if ($td === false) {return false;}//检查加密key,iv的长度是否符合算法要求$key = $this->fixLen($this->_key, mcrypt_enc_get_key_size($td));$iv = $this->fixLen($this->_iv, mcrypt_enc_get_iv_size($td));if (mcrypt_generic_init($td, $key, $iv) !== 0) {return false;}$result = mcrypt_generic($td, $str);mcrypt_generic_deinit($td);mcrypt_module_close($td);return base64_encode($result); // 对加密后的结果进行Base64编码}/*** 对加密的字符串进行3DES解密* @param string 要解密的字符串* @return mixed 解密成功返回解密后的字符串,否则返回false*/public function decrypt3DES($str){$td = mcrypt_module_open(MCRYPT_3DES, "", MCRYPT_MODE_CBC, "");if ($td === false) {return false;}//检查加密key,iv的长度是否符合算法要求$key = $this->fixLen($this->_key, mcrypt_enc_get_key_size($td));$iv = $this->fixLen($this->_iv, mcrypt_enc_get_iv_size($td));if (mcrypt_generic_init($td, $key, $iv) !== 0) {return false;}$str = base64_decode($str); // 对加密字符串进行Base64解码$result = mdecrypt_generic($td, $str);mcrypt_generic_deinit($td);mcrypt_module_close($td);return $this->strUnPad($result);}/*** 返回适合算法长度的key,iv字符串* @param string $str key或iv的值* @param int $td_len 符合条件的key或iv长度* @return string 返回处理后的key或iv值*/private function fixLen($str, $td_len){$str_len = strlen($str);if ($str_len > $td_len) {return substr($str, 0, $td_len);} else if ($str_len < $td_len) {return str_pad($str, $td_len, "\0");}return $str;}/*** 返回适合算法的分组大小的字符串长度,末尾使用\0补齐* @param string $str 要加密的字符串* @param int $td_group_len 符合算法的分组长度* @return string 返回处理后字符串*/private function strPad($str, $td_group_len){$padding_len = $td_group_len - (strlen($str) % $td_group_len);return str_pad($str, strlen($str) + $padding_len, "\0");}/*** 返回适合算法的分组大小的字符串长度,去除末尾的\0* @param string $str 要解密的字符串* @return string 返回处理后字符串*/private function strUnPad($str){return rtrim($str, "\0");}
}
$key = '1a2bc@';
$iv = '12345678'; // 将iv改为字符串形式
$str = "abcd123";
$encrypt = new Encrypt_3DES($key, $iv);
$jiaData = $encrypt->encrypt3DES($str);
$jieData = $encrypt->decrypt3DES($jiaData);
echo "未加密字符串:".$str;
echo "\n";
echo "加密字符串:".$jiaData;
echo "\n";
echo "解密密字符串:".$jieData;

 3、新3des加解密方法

<?php
class TripleDes {private $key;private $iv;public function __construct($key, $iv) {$this->key = $key;$this->iv = $iv;}public function encrypt($data) {$encrypted = openssl_encrypt($data, 'des-ede3-cbc', $this->key, OPENSSL_RAW_DATA, $this->iv);return base64_encode($encrypted);}public function decrypt($encryptedData) {$decrypted = openssl_decrypt(base64_decode($encryptedData), 'des-ede3-cbc', $this->key, OPENSSL_RAW_DATA, $this->iv);return $decrypted;}
}
$key = "2312342132"; 
$iv = "12345678"; // 初始化向量长度必须为8位
$des = new TripleDes($key, $iv);
$data = "adsadb123";
echo "要加密的数据:{$data}\n";
$encrypted = $des->encrypt($data);
echo "加密后的数据:" . $encrypted . "\n";
$decrypted = $des->decrypt($encrypted);
echo "解密后的数据:" . $decrypted . "\n";

4、rsa公私钥加解密、签名验签方法

<?php/*** RSA签名类*/
class Rsa
{public $publicKey = '';public $privateKey = '';private $_privKey;/*** * private key*/private $_pubKey;/*** * public key*/private $_keyPath;/*** * the keys saving path*//*** * the construtor,the param $path is the keys saving path* @param string $publicKey  公钥* @param string $privateKey 私钥*/public function __construct($publicKey = null, $privateKey = null){$this->setKey($publicKey, $privateKey);}/*** 设置公钥和私钥* @param string $publicKey  公钥* @param string $privateKey 私钥*/public function setKey($publicKey = null, $privateKey = null){if (!is_null($publicKey)) {$this->publicKey = $publicKey;}if (!is_null($privateKey)) {$this->privateKey = $privateKey;}}/*** * setup the private key*/private function setupPrivKey(){if (is_resource($this->_privKey)) {return true;}$pem = chunk_split($this->privateKey, 64, "\n");$pem = "-----BEGIN PRIVATE KEY-----\n" . $pem . "-----END PRIVATE KEY-----\n";$this->_privKey = openssl_pkey_get_private($pem);return true;}/*** * setup the public key*/private function setupPubKey(){if (is_resource($this->_pubKey)) {return true;}$pem = chunk_split($this->publicKey, 64, "\n");$pem = "-----BEGIN PUBLIC KEY-----\n" . $pem . "-----END PUBLIC KEY-----\n";$this->_pubKey = openssl_pkey_get_public($pem);return true;}/*** * encrypt with the private key*/public function privEncrypt($data){if (!is_string($data)) {return null;}$this->setupPrivKey();$r = openssl_private_encrypt($data, $encrypted, $this->_privKey);if ($r) {return base64_encode($encrypted);}return null;}/*** * decrypt with the private key*/public function privDecrypt($encrypted){if (!is_string($encrypted)) {return null;}$this->setupPrivKey();$encrypted = base64_decode($encrypted);$r = openssl_private_decrypt($encrypted, $decrypted, $this->_privKey);if ($r) {return $decrypted;}return null;}/*** * encrypt with public key*/public function pubEncrypt($data){if (!is_string($data)) {return null;}$this->setupPubKey();$r = openssl_public_encrypt($data, $encrypted, $this->_pubKey);if ($r) {return base64_encode($encrypted);}return null;}/*** * decrypt with the public key*/public function pubDecrypt($crypted){if (!is_string($crypted)) {return null;}$this->setupPubKey();$crypted = base64_decode($crypted);$r = openssl_public_decrypt($crypted, $decrypted, $this->_pubKey);if ($r) {return $decrypted;}return null;}/*** 构造签名* @param string $dataString 被签名数据* @return string*/public function sign($dataString){$this->setupPrivKey();$signature = false;openssl_sign($dataString, $signature, $this->_privKey);return base64_encode($signature);}/*** 验证签名* @param string $dataString 被签名数据* @param string $signString 已经签名的字符串* @return number 1签名正确 0签名错误*/public function verify($dataString, $signString){$this->setupPubKey();$signature = base64_decode($signString);$flg = openssl_verify($dataString, $signature, $this->_pubKey);return $flg;}public function __destruct(){is_resource($this->_privKey) && @openssl_free_key($this->_privKey);is_resource($this->_pubKey) && @openssl_free_key($this->_pubKey);}
}
$publicKey = 'MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAKZ1mKTymRoGKnHiP1xAy4aiyt5r0BscCZnDAonCrMFZ4kBGriPNHxEaLr5lfBnMKw7k6i+2dsFPSEZooTvqtPUCAwEAAQ==';
$privateKey = 'MIIBVAIBADANBgkqhkiG9w0BAQEFAASCAT4wggE6AgEAAkEApnWYpPKZGgYqceI/XEDLhqLK3mvQGxwJmcMCicKswVniQEauI80fERouvmV8GcwrDuTqL7Z2wU9IRmihO+q09QIDAQABAkBunx3nGHXYjppsfn++7iyTd+I7+Agfy/0xWyB3rpEiGGgfemjcRFaeq5SC2vUNXsrEOY5gbUSQmFxH//Cym18NAiEA1z1cZx/Q9cbIjFPwp1a+K5CVFDXDcfbi/AQgAkVs0/cCIQDF+2fr23AoBslcOC4S0yAx94AbgxCntYuRqztxybsrcwIgMW86ZcT87TX2oaQ1xXk6vC68zqN6fBZEE7Wu1Fa1pAkCIElmOJP3qfAc/AAlj+dIwLHlqWgJwl3674CU9Bfui2bDAiEA0CKJpF8x7KANCcopEQC93PsbIztuML322LOfDV1Lw/k=';
$rsa=new Rsa($publicKey,$privateKey);
$str="abc";
echo "原始数据:".$str;
echo "<br/><hr>";
$res=$rsa->privEncrypt($str);
echo "私钥加密数据:".$res;
echo "<br/>";$res2=$rsa->pubDecrypt($res);
echo "公钥解密数据:".$res2;
echo "<br/><hr>";$res3=$rsa->pubEncrypt($str);
echo "公钥加密数据:".$res3;
echo "<br/>";$res4=$rsa->privDecrypt($res3);
echo "私钥解密数据:".$res4;
echo "<br/><hr>";echo "签名数据:".$str;
$res5=$rsa->sign($str);
echo "<br/>";
echo "签名结果:".$res5;
$res6=$rsa->verify($str,$res5);
echo "<br/>";
echo "验证签结果:".$res6;

5、自定义加密算法1 


function encrypt($data, $key)
{// 将字符串转化为字节数组$data = str_split($data);// 将密钥转化为字节数组$key = str_split($key);// 加密结果$result = '';foreach ($data as $index => $char) {// 获取密钥字符的 ASCII 值$keyChar = ord($key[$index % count($key)]);// 将字符的 ASCII 值与密钥字符的 ASCII 值进行异或运算$encryptedChar = ord($char) ^ $keyChar;// 将加密后的字符拼接到结果字符串中$result .= chr($encryptedChar);}// 将结果字符串转换为 base64 编码$result = base64_encode($result);// 返回加密结果return $result;
}function decrypt($data, $key)
{// 将 base64 编码字符串转换为普通字符串$data = base64_decode($data);// 将字符串转化为字节数组$data = str_split($data);// 将密钥转化为字节数组$key = str_split($key);// 解密结果$result = '';foreach ($data as $index => $char) {// 获取密钥字符的 ASCII 值$keyChar = ord($key[$index % count($key)]);// 将字符的 ASCII 值与密钥字符的 ASCII 值进行异或运算$decryptedChar = ord($char) ^ $keyChar;// 将解密后的字符拼接到结果字符串中$result .= chr($decryptedChar);}// 返回解密结果return $result;
}// 使用示例
$data = "Hello, World!";
$key = "secretKey";
$encryptedData = encrypt($data, $key);
echo "加密后的数据: " . $encryptedData . "\n";
$decryptedData = decrypt($encryptedData, $key);
echo "解密后的数据: " . $decryptedData . "\n";

6、自定义加密算法2


function encrypt($data, $key) {$encryptedData = '';$keyLength = strlen($key);$dataLength = strlen($data);for ($i = 0; $i < $dataLength; $i++) {$encryptedData .= chr(ord($data[$i]) ^ ord($key[$i % $keyLength]));}return base64_encode($encryptedData);
}
function decrypt($data, $key) {$data = base64_decode($data);$decryptedData = '';$keyLength = strlen($key);$dataLength = strlen($data);for ($i = 0; $i < $dataLength; $i++) {$decryptedData .= chr(ord($data[$i]) ^ ord($key[$i % $keyLength]));}return $decryptedData;
}
// 使用示例
$data = 'Hello, World!';
$key = 'secretKey';
$encryptedData = encrypt($data, $key);
echo '加密后的数据: ' . $encryptedData . "\n";
$decryptedData = decrypt($encryptedData, $key);
echo '解密后的数据: ' . $decryptedData . "\n";

7、自定义加密算法3

function encrypt($data, $key) {$encryptedData = '';$keyLength = strlen($key);$dataLength = strlen($data);for ($i = 0; $i < $dataLength; $i++) {$encryptedData .= chr((ord($data[$i]) + ord($key[$i % $keyLength])) % 256);}return bin2hex($encryptedData);
}
function decrypt($data, $key) {$data = hex2bin($data);$decryptedData = '';$keyLength = strlen($key);$dataLength = strlen($data);for ($i = 0; $i < $dataLength; $i++) {$decryptedData .= chr((ord($data[$i]) - ord($key[$i % $keyLength]) + 256) % 256);}return $decryptedData;
}
// 使用示例
$data = 'Hello, World!';
$key = 'secretKey';
$encryptedData = encrypt($data, $key);
echo '加密后的数据: ' . $encryptedData . "\n";
$decryptedData = decrypt($encryptedData, $key);
echo '解密后的数据: ' . $decryptedData . "\n";

二、不可解密加密算法 

1、md5算法 

$pex='pwd';
$pwd='123456';
$pwdMd5=md5($pex.$pwd);
//校验
$pwd=$_POST['pwd'];
$postPwdMd5=md5($pex.$pwd);
if($pwdMd5==$postPwdMd5){echo '密码正确';
}else{echo '密码错误';
}

2、crypt算法

$pex='pwd';
$pwd='123456';
$pwdMd5=crypt($pwd,$pex);
//校验
$pwd=$_POST['pwd'];
$postPwdMd5=crypt($pwd,$pex);
if($pwdMd5==$postPwdMd5){echo '密码正确';
}else{echo '密码错误';
}

3、sha1算法

$pex='pwd';
$pwd='123456';
$pwdMd5=sha1($pwd,$pex);
//校验
$pwd=$_POST['pwd'];
$postPwdMd5=sha1($pwd,$pex);
if($pwdMd5==$postPwdMd5){echo '密码正确';
}else{echo '密码错误';
}

5、hash 算法

$pex='pwd';
$pwd='123456';
$pwdMd5=hash("sha256", $pwd.$pex);
//校验
$pwd=$_POST['pwd'];
$postPwdMd5=hash("sha256", $pwd.$pex);
if($pwdMd5==$postPwdMd5){echo '密码正确';
}else{echo '密码错误';
}

6、 password_hash算法

<?php
$pex='pwd';
$pwd='123456';
$pwdMd5=password_hash($pwd.$pex,PASSWORD_BCRYPT);
//校验
$pwd=$_POST['pwd'];
$postPwdMd5=password_verify($pwd.$pex,$pwdMd5);
if($pwdMd5==$postPwdMd5){echo '密码正确';
}else{echo '密码错误';
}

http://www.wangmingla.cn/news/5305.html

相关文章:

  • 动态网站开发实训报告1百度seo流量
  • 局域网内做网站温州网站建设开发
  • 做视频网站如何赚钱seo顾问张智伟
  • 手机做公司网站站长平台
  • 邯郸去哪做网站改版杭州搜索引擎排名
  • 中企动力网站开发汕头seo建站
  • 做网站什么是解析什么是跳转游戏代理免费加盟
  • 目前主流的网站开发语言百度客服转人工
  • wordpress英文企业主题爱站网seo培训
  • 公司网站定位建议高端营销型网站建设
  • 呼和浩特做网站电商运营工资一般多少钱一个月
  • 崇州企业网站建设app搜索优化
  • 网上建立网站百度信息流广告位置
  • 专做韩国代购的网站seo网站排名的软件
  • wordpress 变成垃圾邮件seo超级外链工具
  • 2003建立虚拟网站南京今日新闻头条
  • 个人网站建设软件宁德市
  • 中国广告设计网seo收录查询
  • 南宁网站建设设计制作永久免费制作网页
  • 网站制作软件都是什么网站运营及推广方案
  • 公司网站建设的方案市场推广方案怎么做
  • 如何电话推销客户做网站江门网站优化公司
  • 莫邻在线客服系统网店seo排名优化
  • DW做网站下拉列表怎么做网站策划方案书
  • 北京做网站的公司排行郑州网络seo
  • 做网站设计怎么进企业济南网站制作
  • 没有有知道钓鱼网站在哪儿做网站网页的优化方法
  • 网站推广网络推广金华网站推广
  • 表述网站建设流程正规赚佣金的平台
  • 免费自动建站nba最新排行