网站首页/ 信息中心/ 档案百科/

综合档案管理系统核心档案加密存储从零落地实操指南

发布时间:2026年06月07日 18:03:33 浏览量:0

前置环境准备

本方案可直接整合到现有Java栈开发的综合档案管理系统中,十分钟即可落地,需要提前安装以下环境,所有地址可直接下载:

核心加密配置实现

1. 引入完整依赖

将以下依赖复制到项目的pom.xml文件中,无需修改版本可直接使用:

``` org.springframework.boot spring-boot-starter-web 2.7.12 cn.hutool hutool-crypto 5.8.22 mysql mysql-connector-java 8.0.30 com.baomidou mybatis-plus-boot-starter 3.5.3.1 org.projectlombok lombok 1.18.30 ```

2. 配置加密密钥与数据库

在项目的application.yml配置文件中,复制以下完整配置,修改数据库连接信息即可:

``` spring: datasource: url: jdbc:mysql://localhost:3306/archive_db?useUnicode=true&characterEncoding=utf-8&serverTimezone=GMT%2B8 username: root password: 你的数据库密码 archive: crypto: AES-256密钥必须为32位字符串,上线前必须修改 secret-key: "archive_custom_secret_key_32bitXXXX" ```

注意:密钥必须为32位字符串,生产环境不可使用默认值,密钥不能提交到代码仓库

3. 编写可复用加密工具类

新建com.archive.utils.ArchiveCryptoUtil类,复制以下完整代码:

``` package com.archive.utils; import cn.hutool.crypto.symmetric.AES; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; @Component public class ArchiveCryptoUtil { private AES aes; @Value("${archive.crypto.secret-key}") public void initAes(String secretKey) { this.aes = new AES(secretKey.getBytes()); } public String encrypt(String plainText) { if(plainText == null || plainText.isEmpty()) return plainText; return aes.encryptBase64(plainText); } public String decrypt(String cipherText) { if(cipherText == null || cipherText.isEmpty()) return cipherText; return aes.decryptStr(cipherText); } } ```

业务层加密解密落地

1. 创建核心档案表

在你的档案数据库中执行以下建表SQL:

``` CREATE TABLE `core_archive` ( `id` bigint NOT NULL AUTO_INCREMENT COMMENT '档案ID', `archive_name` varchar(200) NOT NULL COMMENT '档案名称', `archive_content` mediumtext NOT NULL COMMENT '加密档案内容', `archive_no` varchar(50) NOT NULL COMMENT '档案编号', `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='核心加密档案表'; ```

2. 实体类与Mapper代码

综合档案管理系统核心档案加密存储从零落地实操指南

新建实体类CoreArchive

``` package com.archive.entity; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import lombok.Data; import java.util.Date; @Data @TableName("core_archive") public class CoreArchive { @TableId(type = IdType.AUTO) private Long id; private String archiveName; private String archiveContent; private String archiveNo; private Date createTime; } ```

新建Mapper接口:

``` package com.archive.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.archive.entity.CoreArchive; import org.apache.ibatis.annotations.Mapper; @Mapper public interface CoreArchiveMapper extends BaseMapper { } ```

3. 新增自动加密、查询自动解密

新建业务类ArchiveService,复制以下代码:

``` package com.archive.service; import com.archive.entity.CoreArchive; import com.archive.mapper.CoreArchiveMapper; import com.archive.utils.ArchiveCryptoUtil; import org.springframework.stereotype.Service; import javax.annotation.Resource; @Service public class ArchiveService { @Resource private CoreArchiveMapper coreArchiveMapper; @Resource private ArchiveCryptoUtil archiveCryptoUtil; public int addArchive(CoreArchive archive) { // 核心内容自动加密入库 String plainContent = archive.getArchiveContent(); archive.setArchiveContent(archiveCryptoUtil.encrypt(plainContent)); return coreArchiveMapper.insert(archive); } public CoreArchive getArchiveById(Long id) { CoreArchive archive = coreArchiveMapper.selectById(id); if(archive == null) return null; // 取出自动解密 String cipherContent = archive.getArchiveContent(); archive.setArchiveContent(archiveCryptoUtil.decrypt(cipherContent)); return archive; } } ```

效果验证与安全加固

1. 效果验证步骤

1. 启动项目,调用新增档案接口,传入明文档案内容

2. 直接登录数据库查看core_archive表,archive_content字段为乱码密文,说明加密生效

3. 调用查询接口,返回正确的明文内容,说明解密生效

2. 生产环境安全要点

  • 密钥管理:生产环境通过环境变量注入密钥,不要写在配置文件中,Docker部署可通过-e参数传入
  • 大档案处理:单份档案超过10MB时,将文件存储到对象存储,仅加密文件元数据和访问密钥,避免数据库性能下降
  • 权限控制:解密接口必须添加身份验证,仅允许拥有对应权限的用户查看明文档案
  • 国密替换:如果需要合规要求的国密算法,仅需将工具类的AES替换为hutool的SM4实现即可,业务代码无需改动
上一篇:个人档案管理
音频档案管理:别让宝贵的声音资料变成一堆乱麻
音频档案管理:别让宝贵的声音资料变成一堆乱麻
你是不是也这样?手机里存了几百个录音文件,有工作会议、孩子第一次叫妈妈、重要的电话录音,还有自己瞎哼哼的旋律。想找半年前那次关键的会议记录?得,在文件海洋里翻个半小时,最后可能还找错了。更扎心的是,有...
2026年06月07日 18:03:33
微信咨询
电话联系
QQ客服
微信咨询一对一服务
服务热线: 028-8744 4417
QQ客服: 2305721818