一个功能强大的在线二维码生成器,支持文本、URL、Wi-Fi等多种内容类型的二维码生成,具备高级加密验证、人机验证和多种导出格式。
- 多类型支持:文本、URL链接、Wi-Fi网络配置
- 实时预览:即时生成和显示二维码
- 自定义样式:前景色、背景色、尺寸调节
- Logo集成:支持上传自定义Logo图标
- 批量导出:PNG、SVG、PDF多种格式
- RSA加密验证:前后端通信全程加密
- Cloudflare Turnstile:人机验证防止滥用
- 混合加密体系:AES+RSA双重加密保障
- 响应式设计:完美适配桌面和移动端
- 现代化UI:渐变背景、毛玻璃效果
- 直观操作:一键切换生成类型
- 实时反馈:操作状态即时提示
- Node.js:高性能JavaScript运行时
- Express.js:轻量级Web框架
- qrcode库:专业二维码生成引擎
- node-forge:密码学工具库
- crypto模块:内置加密支持
- 原生JavaScript:无框架依赖,性能优异
- Web Crypto API:浏览器原生加密
- Canvas API:图像处理和Logo集成
- jsPDF:PDF文档生成
- CSS Grid/Flexbox:现代化布局
- RSA-4096:非对称加密
- AES-256-GCM:对称加密
- OAEP填充:最优非对称加密填充
- 认证标签:防止数据篡改
- Node.js 16.0 或更高版本
- npm 或 yarn 包管理器
- 现代浏览器(支持Web Crypto API)
- 克隆项目
git clone
cd qrcode-workshop- 安装依赖
npm install- 生成密钥对
node generate-keys.js这将自动生成 .env 文件,包含RSA密钥对配置
- 配置环境变量
编辑
.env文件,添加以下配置:
# RSA密钥配置(已自动生成)
RSA_PUBLIC_KEY="your-public-key"
RSA_PRIVATE_KEY="your-private-key"
# 服务器配置
PORT=3010
NODE_ENV=production
# Cloudflare Turnstile
CLOUDFLARE_TURNSITE_SECRET_KEY=your-turnstile-secret-key
CLOUDFLARE_TURNSITE_SITE_KEY=your-turnstile-site-key- 启动服务
# 开发模式
npm run dev
# 生产模式
npm start- 访问应用 打开浏览器访问:http://localhost:3010
-
选择内容类型
- 📄 文本:输入任意文本内容
- 🔗 网址:输入URL链接
- 📶 Wi-Fi:配置网络名称、密码、安全类型
-
自定义样式
- 调整二维码尺寸(200-600px)
- 设置前景色和背景色
- 上传Logo图标(可选)
-
生成二维码
- 完成人机验证
- 点击"生成二维码"按钮
- 实时预览生成结果
-
导出二维码
- 选择导出格式:PNG、SVG、PDF
- 一键下载到本地
- 支持自定义文件名
Wi-Fi二维码遵循标准格式,支持:
- WPA/WPA2:最常用的安全类型
- WEP:传统安全协议
- 无密码:开放网络
格式示例:WIFI:T:WPA;S:网络名称;P:密码;;
- 前端获取RSA公钥
- 生成AES会话密钥
- 使用RSA加密AES密钥
- 使用AES加密业务数据
- 后端RSA解密AES密钥
- 后端AES解密业务数据
POST /api/generate
请求格式(加密):
{
"encrypted": "加密后的JSON字符串"
}解密后数据结构:
{
"text": "二维码内容",
"color": "#000000",
"bgColor": "#FFFFFF",
"size": 300,
"type": "text|url|wifi",
"format": "png|svg|pdf",
"turnstileToken": "人机验证token"
}响应格式:
{
"success": true,
"data": {
"qrCode": "base64编码的二维码图像",
"format": "png",
"size": 300
}
}GET /api/public-key
响应格式:
{
"success": true,
"publicKey": "RSA公钥PEM格式"
}- 左右分栏布局
- 左侧输入配置区域
- 右侧实时预览区域
- 现代化渐变背景
- 垂直堆叠布局
- 触摸友好的按钮
- 响应式字体大小
- 优化的触摸体验
- 使用HTTPS:确保数据传输安全
- 配置防火墙:限制不必要的端口访问
- 定期更新:及时更新依赖包
- 监控日志:记录异常访问和错误
-
私钥保护:
- 不要提交到版本控制
- 使用环境变量存储
- 定期轮换密钥
-
访问控制:
- 配置CORS策略
- 限制请求频率
- 启用访问日志
问题1:二维码生成失败
- 检查网络连接
- 验证输入内容格式
- 查看浏览器控制台错误
问题2:加密验证失败
- 确认RSA密钥配置正确
- 检查密钥格式(PEM格式)
- 验证环境变量加载
问题3:人机验证不通过
- 检查Turnstile配置
- 确认站点密钥匹配
- 查看Cloudflare控制台
设置环境变量启用详细日志:
DEBUG=qrcode:*本项目采用 NCRPL v1.1 非商业性互惠公共许可证
- ✅ 允许:非商业使用、修改、分发
- ❌ 禁止:商业化使用、闭源分发
- 🔄 要求:衍生作品需采用相同许可证
- 📝 署名:必须保留原始版权声明
如需商业使用,请联系项目维护者获取商业授权。
- Fork 项目仓库
- 创建功能分支
- 使用eslint检查
- 提交代码变更
- 创建Pull Request
- 使用ESLint进行代码检查
- 遵循Prettier格式化
- 编写单元测试
- 更新相关文档
# 运行测试
npm lint- 平均响应时间:< 500ms
- 并发处理能力:100 req/s
- 内存使用:< 100MB
- CPU占用:< 10%
- 首屏加载:< 2s
- 交互响应:< 100ms
- 移动端优化:PWA支持
- 缓存策略:智能缓存
⭐ 如果这个项目对你有帮助,请给我们一个star!
💡 有任何问题或建议,欢迎提交Issue或Pull Request