root@tr-desktop:/www/wwwroot/troa/webAPI/public/jwt# cat -n hs256.php
1 <?php
2
3 // 设置密钥
4 $secretKey = 'your_secret_key';
5
6 // 设置数据
7 $header = json_encode(['alg' => 'HS256', 'typ' => 'JWT']);
8 $payload = json_encode(['sub' => '1234567890', 'name' => 'John Doe', 'iat' => 1516239022]);
9
10 // Base64Url 编码函数
11 function base64UrlEncode($data) {
12 return rtrim(strtr(base64_encode($data), '+/', '-_'), '=');
13 }
14
15 // 编码 Header 和 Payload
16 $base64UrlHeader = base64UrlEncode($header);
17 $base64UrlPayload = base64UrlEncode($payload);
18
19 // 创建待签名的字符串
20 $dataToSign = $base64UrlHeader . '.' . $base64UrlPayload;
21
22 // 使用 HMAC-SHA256 算法签名
23 $signature = hash_hmac('sha256', $dataToSign, $secretKey, true);
24
25 // Base64Url 编码签名
26 $base64UrlSignature = base64UrlEncode($signature);
27
28 // 生成最终的 JWT
29 $jwt = $base64UrlHeader . '.' . $base64UrlPayload . '.' . $base64UrlSignature;
30
31 echo "JWT: " . $jwt;
32
33 ?>
root@tr-desktop:/www/wwwroot/troa/webAPI/public/jwt# cat -n aes.php
1 <?php
2
3 // 加密函数
4 function aes_encrypt($data, $key) {
5 // AES-256-CBC 加密模式
6 $method = 'AES-256-CBC';
7
8 // 生成随机的初始化向量(IV)
9 $iv = openssl_random_pseudo_bytes(openssl_cipher_iv_length($method));
10
11 // 使用 openssl_encrypt 进行加密
12 $encryptedData = openssl_encrypt($data, $method, $key, 0, $iv);
13
14 // 返回加密数据和 IV(IV 是必须的,用于解密)
15 return base64_encode($encryptedData . '::' . $iv);
16 }
17
18 // 解密函数
19 function aes_decrypt($encryptedData, $key) {
20 // AES-256-CBC 解密模式
21 $method = 'AES-256-CBC';
22
23 // 解码数据并分割出加密内容和 IV
24 list($encryptedData, $iv) = explode('::', base64_decode($encryptedData), 2);
25
26 // 使用 openssl_decrypt 进行解密
27 return openssl_decrypt($encryptedData, $method, $key, 0, $iv);
28 }
29
30 // 示例使用
31
32 // 密钥(必须为 32 字节,用于 AES-256)
33 $key = '1234567890abcdef1234567890abcdef'; // 256-bit 密钥
34
35 // 明文数据
36 $data = 'Hello, AES encryption in PHP!';
37
38 // 加密
39 $encryptedData = aes_encrypt($data, $key);
40 echo "Encrypted Data: " . $encryptedData . "\n";
41
42 // 解密
43 $decryptedData = aes_decrypt($encryptedData, $key);
44 echo "Decrypted Data: " . $decryptedData . "\n";
45
46 ?>