php加密算法及扩展安装

PHP程序员们在编写代码程序时,除了要保证代码的高性能之外,还有一点是非常重要的,那就是程序的 安全性保障。PHP除了自带的几种加密函数外,还有功能更全面的PHP加密扩展库 McryptMhash
其中,Mcrypt扩展库可以实现加密解密功能,就是既能将明文加密,也可以密文还原。
mcrypt 是 php 里面重要的加密支持扩展库,linux环境下:该库在默认情况下不开启。window环境下:PHP>=5.3,默认开启mcrypt扩展。

支持的算法和加密模式

Mcrypt库支持20多种加密算法和8种加密模式,具体可以通过函数mcrypt_list_algorithms()和mcrypt_list_modes()来显示 [1]  

加密算法

Mcrypt支持的算法有:
cast-128
gost
rijndael-128
twofish
arcfour
cast-256
loki97
rijndael-192
saferplus
wake
blowfish-compat
des
rijndael-256
serpent
xtea
blowfish
enigma
rc2
tripledes

加密模式

Mcrypt支持的加密模式有:
cbc
cfb
ctr
ecb
ncfb
nofb
ofb
stream
这些算法和模式在应用中要以常量来表示,写的时候加上前缀MCRYPT_和MCRYPT_MODE_来表示,如下面Mcrypt应用的

例子

DES算法表示为MCRYPT_DES;
ECB模式表示为MCRYPT_MODE_ECB;



< ?php $str = "我的名字是?一般人我不告诉他!"; //加密内容 $key = "key:111"; //密钥 $cipher = MCRYPT_DES; //密码类型 $modes = MCRYPT_MODE_ECB; //密码模式 $iv = mcrypt_create_iv(mcrypt_get_iv_size($cipher,$modes),MCRYPT_RAND);//初始化向量 echo "加密明文:".$str."<p>"; $str_encrypt = mcrypt_encrypt($cipher,$key,$str,$modes,$iv); //加密函数 echo "加密密文:".$str_encrypt." <p>"; $str_decrypt = mcrypt_decrypt($cipher,$key,$str_encrypt,$modes,$iv); //解密函数 echo "还原:".$str_decrypt; ?>

安装

 

转载于:https://www.cnblogs.com/itcx/p/4054096.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
实现JWT的RS256加密算法需要使用PHP的openssl扩展,以下是一个简单的示例代码: ```php <?php // 生成JWT Token function generateToken($payload, $privateKey) { // JWT 头部 $header = array( "alg" => "RS256", "typ" => "JWT" ); // JWT 载荷 $payload = json_encode($payload); // JWT 签名 $headerEncoded = base64UrlEncode(json_encode($header)); $payloadEncoded = base64UrlEncode($payload); $data = $headerEncoded . '.' . $payloadEncoded; $signature = ''; openssl_sign($data, $signature, $privateKey, OPENSSL_ALGO_SHA256); $signatureEncoded = base64UrlEncode($signature); // JWT Token $jwtToken = $headerEncoded . '.' . $payloadEncoded . '.' . $signatureEncoded; return $jwtToken; } // 验证JWT Token function verifyToken($jwtToken, $publicKey) { $jwtParts = explode('.', $jwtToken); if (count($jwtParts) != 3) { return false; } $headerEncoded = $jwtParts[0]; $payloadEncoded = $jwtParts[1]; $signatureEncoded = $jwtParts[2]; $header = json_decode(base64UrlDecode($headerEncoded), true); if (!isset($header['alg']) || $header['alg'] !== 'RS256') { return false; } $payload = json_decode(base64UrlDecode($payloadEncoded), true); if (!$payload) { return false; } $data = $headerEncoded . '.' . $payloadEncoded; $signature = base64UrlDecode($signatureEncoded); // 验证签名 $verifyResult = openssl_verify($data, $signature, $publicKey, OPENSSL_ALGO_SHA256); if ($verifyResult === 1) { return true; } else { return false; } } // Base64 URL 编码 function base64UrlEncode($data) { $urlsafe = strtr(base64_encode($data), '+/', '-_'); return rtrim($urlsafe, '='); } // Base64 URL 解码 function base64UrlDecode($data) { $data = strtr($data, '-_', '+/'); $dataLen = strlen($data) % 4; if ($dataLen) { $data .= str_repeat('=', 4 - $dataLen); } return base64_decode($data); } // 读取私钥 $privateKey = openssl_pkey_get_private("file://path/to/private_key.pem"); // 读取公钥 $publicKey = openssl_pkey_get_public("file://path/to/public_key.pem"); // 生成Token $payload = array( "sub" => "1234567890", "name" => "John Doe", "iat" => 1516239022 ); $jwtToken = generateToken($payload, $privateKey); echo "JWT Token: " . $jwtToken . "\n"; // 验证Token $verifyResult = verifyToken($jwtToken, $publicKey); if ($verifyResult) { echo "Token 验证成功\n"; } else { echo "Token 验证失败\n"; } ``` 在以上示例代码中,`generateToken` 函数用于生成JWT Token,`verifyToken` 函数用于验证JWT Token。`base64UrlEncode` 和 `base64UrlDecode` 分别用于进行Base64 URL编码和解码。请注意,需要将私钥和公钥保存在文件中,并且需要指定正确的文件路径。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值