Download the PHP package kaadon/peertopeer without Composer
On this page you can find all versions of the php package kaadon/peertopeer. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download kaadon/peertopeer
More information about kaadon/peertopeer
Files in kaadon/peertopeer
Package peertopeer
Short Description Kaadon PeerToPeer for PHP
License MIT
Homepage https://developer.kaadon.com
Informations about the package peertopeer
Kaadon PeerToPeer
一个基于 X25519 密钥交换和 AES-GCM 加密的 PHP 端到端加密库,提供安全的点对点通信解决方案。
特性
- 🔐 端到端加密: 使用 X25519 椭圆曲线密钥交换 + AES-256-GCM 加密
- 🔑 密钥管理: 自动生成密钥对,支持密钥导入导出
- 💾 本地密钥存储: 提供公钥的本地存储和管理功能
- 🛡️ 安全保障: 基于 libsodium 加密库,军用级别的安全性
- 🎯 简单易用: 简洁的 API 设计,几行代码即可实现加密通信
- 🔧 框架集成: 支持 ThinkPHP 框架集成
前端
本库适用于后端 PHP 环境,前端可以使用 @kaadon.com/peertopeer 结合
前端库 npm
安装
通过 Composer 安装:
系统要求
- PHP >= 7.2
- ext-sodium 扩展
- ext-json 扩展
安装 Sodium 扩展
快速开始
基础用法
使用本地密钥存储
API 文档
E2EEncryption 类
构造函数
$privateKey: (可选) Base64 编码的私钥。如果不提供,将自动生成新的密钥对
公共方法
getPublicKey()
获取当前实例的公钥(Base64 编码)
getPrivateKey()
获取当前实例的私钥(Base64 编码)
encrypt()
使用远程公钥加密消息
参数:
$remotePublicKeyB64: Base64 编码的远程公钥$message: 要加密的明文消息
返回:
decrypt()
使用远程公钥解密消息
参数:
$remotePublicKeyB64: Base64 编码的远程公钥$ivB64: Base64 编码的初始化向量$ciphertextB64: Base64 编码的密文
返回: 解密后的明文消息
LocalKeyStore 类
构造函数
$keysFile: 存储公钥的 JSON 文件路径
公共方法
savePublicKey()
保存远程用户的公钥
getPublicKey()
获取指定用户的公钥
listPublicKeys()
列出所有已保存的公钥名称
deletePublicKey()
删除指定用户的公钥
hasPublicKey()
检查是否存在指定用户的公钥
使用示例
完整的通信示例
ThinkPHP 框架集成
本库支持 ThinkPHP 5.1 框架集成。安装后会自动注册配置文件。
在 ThinkPHP 中使用:
安全注意事项
⚠️ 重要安全提示:
-
私钥保护: 私钥必须妥善保管,绝不能泄露。建议使用安全的密钥管理系统。
-
公钥验证: 在实际应用中,必须通过安全渠道验证公钥的真实性,防止中间人攻击。
-
密钥轮换: 定期更换密钥对以提高安全性。
-
安全存储: 本地密钥存储文件应设置适当的文件权限(如 600)。
- 随机数生成: 确保系统有足够的熵源用于生成安全的随机数。
错误处理
库中定义了自定义异常类 PeerToPeerException:
测试
运行测试套件:
或者直接使用 PHPUnit:
性能注意事项
- X25519 密钥交换计算相对较重,建议缓存共享密钥
- AES-GCM 加密性能优异,适合大量数据加密
- 避免在循环中重复创建 E2EEncryption 实例
故障排除
常见问题
-
缺少 sodium 扩展
解决方案: 安装 php-sodium 扩展
-
解密失败
可能原因:
- 使用了错误的密钥对
- IV 或密文被篡改
- 密钥格式不正确
-
文件权限错误
解决方案: 检查密钥存储文件的读写权限
更新日志
v1.0.0
- 初始版本发布
- 支持 X25519 + AES-GCM 端到端加密
- 提供本地密钥存储功能
- 支持 ThinkPHP 框架集成
贡献
欢迎提交 Issue 和 Pull Request!
- Fork 本项目
- 创建特性分支 (
git checkout -b feature/amazing-feature) - 提交更改 (
git commit -am 'Add amazing feature') - 推送到分支 (
git push origin feature/amazing-feature) - 创建 Pull Request
许可证
本项目基于 MIT 许可证开源。详见 LICENSE 文件。