用于秘密信息的特别情人节爱情卡片
Source: Dev.to
一个 Spring Boot Web 应用程序,使用 LSB 隐写技术将秘密信息隐藏在情人节卡片图片中。
发送一张美丽的情人节图片,里面暗藏一段隐藏的情书。只有使用该应用的人才能解码——这就像现代时代的数字隐形墨水。
模式
| 模式 | 描述 |
|---|---|
| 读取模式 | 上传情人节卡片图片 → 查看隐藏的信息(如果存在) |
| 创建模式 | 编写你的秘密信息 → 选择背景图片 → 下载嵌入了信息的情人节卡片 |
该应用使用 最不显著位 (LSB) 隐写——通过微调图像像素中每个 RGB 颜色通道的最后一位来编码信息。对肉眼而言这些变化是不可见的,但算法可以解码。
技术栈
- Java 1.8
- Spring Boot 2.7.18
- Thymeleaf 模板(不使用 JavaScript 框架)
- 原生 CSS,采用响应式心形布局(≈ 70 % 视口,移动端友好)
- Maven 单 JAR 部署(
java -jar可直接运行)
理念: 保持简单。交付可工作的软件。以后再扩展。
该项目最初是一个野心勃勃的 7 层多模块架构,但在快速转向干净的单 JAR 设计后,产品在 数小时 而非数天内交付。
构建与运行
# Build
mvn clean package
# Run
java -jar target/valentine-love-heart-cards-0.0.1-SNAPSHOT.jar
在浏览器中打开并访问:
http://localhost:8080
应用页面
首页(读取模式)
- 心形 UI,中心有一个弓形按钮。
- 点击弓形 → 上传情人节卡片图片。
- 应用会解码任何隐藏的信息并显示出来。
创建页面
- 心形 UI,提供一个文本区域用于输入信息。
- 选择背景图片(PNG/BMP/GIF)。
- 点击 “Create Card” → 下载嵌入了信息的情人节卡片。
- 分享该图片;接收者上传后即可揭示你的秘密信息。
查看页面
- 在上传后显示解码后的信息。
- 可能的状态:找到信息、无信息、错误、空白。
(此处应放置展示心形布局、弓形按钮、信息显示和创建表单的截图。)
项目文档(“Agents” 方法)
我首先创建了一个 Agents.md 文档——一个简明的“合同”,定义了:
- ✅ 技术栈: Java 1.8、Spring Boot 2.7.18、不使用 前端框架。
- ✅ 架构规则: 层级依赖、模块结构。
- ✅ 禁止使用的技术: TypeScript、Angular、React、npm 等。
- ✅ 测试理念: 独立的测试模块,生产 JAR 中不包含测试代码。
这份单文件让 GitHub Copilot 从代码生成器转变为自主的高级开发者。我在每次会话中都附上 Agents.md,Copilot 能在无需微观管理的情况下做出正确的架构决策。
文档流程
- PLAN.md – 分阶段执行路线图。
- README.md – 项目概览 + 快速入门。