当前位置: 首页 > news >正文

【老马】离线版金融敏感信息加解密组件开源项目 encryption-local

前言

你是否存在这样的苦恼,数据需要安全存储,但是每个系统大家自己写,很浪费时间。。

每一个子项目各自为政,加解密搞得也无法统一。也许下面这个开源项目可以帮助你。

encryption-local 一个离线版本的金融敏感信息加解密工具,用于数据库敏感信息存储。

创作目的:为金融敏感数据,提供一个简单易用的离线加解密工具。加密机服务可以在此基础上很容易的实现。

特性

  • 身份证加解密

  • 地址加解密

  • 姓名加解密

  • 邮箱加解密

  • 手机号加解密

  • 银行卡加解密

  • 密码加解密

项目推荐

下面是一些日志、加解密、脱敏安全相关的库推荐:

项目介绍
sensitive-word高性能敏感词核心库
sensitive-word-admin敏感词控台,前后端分离
sensitive高性能日志脱敏组件
auto-log统一日志切面组件,支持全链路traceId
encryption-local离线加密机组件
encryption加密机标准API+本地客户端
encryption-server加密机服务

拓展阅读

【老马】离线版金融敏感信息加解密组件开源项目encryption-local

【藏经阁】加密机服务完整解决方案,包含客户端+服务端

快速开始

maven 引入

<dependency><groupId>com.github.houbb</groupId><artifactId>encryption-local-core</artifactId><version>1.2.0</version>
</dependency>

方法概览

常见方法都在 EncryptionLocalUtil#xxx 工具类中可见。

加密

方法说明
addressEncrypt地址加密
nameEncrypt姓名加密
emailEncrypt邮箱加密
phoneEncrypt手机号加密
idCardEncrypt身份证加密
bankCardNoEncrypt银行卡加密
passwordEncrypt密码加密

统一入参:(text, salt) text 为待加密的内容, salt 为秘钥。v1.1.0 支持不带 salt 的方法。

统一出参:CommonEncryptResponse 对象,有 3 个属性:

属性说明
cipher密文
mask掩码
hash摘要

解密

方法说明
addressDecrypt地址解密
nameDecrypt姓名解密
emailDecrypt邮箱解密
phoneDecrypt手机号解密
idCardDecrypt身份证解密
bankCardNumDecrypt银行卡解密
passwordDecrypt密码解密

统一入参:cipher 为加密之后的密文字符串

统一出参:解密之后的明文字符串

使用

用法都是类似的,此处以手机号为例:

final String email = "18888888888";
final String salt = "99886622";CommonEncryptResponse response = EncryptionLocalUtil.phoneEncrypt(email, salt);
String cipher = response.getCipher();
String mask = response.getMask();
String hash = response.getHash();
Assert.assertEquals("08276740AEC8AAC11C6D0F84184DE2B5", cipher);
Assert.assertEquals("188****8888", mask);
Assert.assertEquals("381FA900C0626D7D7E2DB185B3558166", hash);// 解密
String plain = EncryptionLocalUtil.phoneDecrypt(cipher, salt);
Assert.assertEquals(email, plain);

其他的各种数据效果示例整理如下,秘钥统一使用 99886622

注意:生产环境使用,必须保证秘钥的复杂性(建议不低于 10 位)

类别明文秘文掩码摘要
地址太平洋比基尼海滩比奇堡镇贝壳街124号的波萝屋D8D9E99FB8286107C2F75325C0B9046CF335EE4AC4FCD3F27E0D6BFD8B3DBF39440A3D69422A3AF933576798CF3860F330F288E196CEACB22CCCDA0623B94355太平洋比基尼*************的波萝屋31912515337902B8A3CC1CBDB5772358
姓名海绵宝宝91AF56071FA8830391144DBEAE3967DA海**宝94B221D98E0EF588B5304A88752DC6C7
邮箱haimian@baobao.com15768CD9C0E70E2C798451E7982C8877DF991568ECD7BC3E1A9E9AD72455B085hai****@baobao.com4C651B4CDACA3CFA4876277B678282A9
手机1888888888808276740AEC8AAC11C6D0F84184DE2B5188****8888381FA900C0626D7D7E2DB185B3558166
身份证33078119850907947974101E0AAF25796680E40F3198D1AEFBC00E25FD8316F40CE90B425338894A42330781*********4792C7E7A814C36DE11EF01F39C35CECF12
银行卡4427290920309717288D5EC5432203677D3714E9A270F9998AC04BF65E5A36C6773187A4239D05EE442729******9717DE550BAF362B3EF640FF5AEC7D6E2F38
密码1234568B208237BEB2E6A4390E7128E5E000D7******FEB408A10822A55A939E8E38A6612515

完整例子参考 EncryptionLocalUtilTest.java

引导类

为了便于用于拓展,加密支持通过引导类 EncryptionLocalBs 灵活指定配置。

配置

EncryptionLocalBs 中支持用户自定义下列配置。

属性说明默认值
salt秘钥null
hash哈希策略md5
secret加密策略aes

在指定秘钥之后,其他方法不再需要传递秘钥。

方法和工具类中一致。

例子

EncryptionLocalBs localBs = EncryptionLocalBs.newInstance();// 加密
CommonEncryptResponse encryptResponse = localBs.encrypt("123456", EncryptTypeEnum.PASSWORD.getCode());
Assert.assertEquals("CommonEncryptResponse{cipher='8B208237BEB2E6A4390E7128E5E000D7', mask='******', hash='FEB408A10822A55A939E8E38A6612515'}", encryptResponse.toString());// 解密
String plainText = localBs.decrypt(encryptResponse.getCipher(), EncryptTypeEnum.PASSWORD.getCode());
Assert.assertEquals("123456", plainText);

小结

离线版本的加解密好处是非常的方便。

不过缺点也比较明显,那就是在真正追求安全的公司,研发是不能够拥有直接加解密的能力的。

所以最好是有一个单独的加密机服务,对公司内部提供统一的加解密能力。

相关文章:

  • 实战设计模式之状态模式
  • React 19中useContext不需要Provider了。
  • numpy数组的拆分和组合
  • Python 装饰器详解
  • 使用 C# 入门深度学习:线性代数详细讲解
  • 3:OpenCV—视频播放
  • MySQL--day2--基本的select语句
  • Ubuntu16.04升级gcc/g++版本方法
  • [特殊字符] SSL/TLS 中的密钥协商流程笔记
  • 【图像生成大模型】HunyuanVideo:大规模视频生成模型的系统性框架
  • Vue百日学习计划Day28-32天详细计划-Gemini版
  • 泰国SAP ERP实施如何应对挑战?工博科技赋能中企出海EEC战略
  • 机器学习-人与机器生数据的区分模型测试 - 模型选择与微调
  • 第三章:UI 系统架构拆解与动态界面管理实录
  • Android动态音频柱状图可视化解析:从原理到实现
  • 【爬虫】DrissionPage-7
  • 项目制作流程
  • 2- PyTorch
  • 如何确定自己的职业发展方向?
  • [创业之路-362]:企业战略管理案例分析-3-战略制定-华为使命、愿景、价值观的演变过程
  • 大学2025丨专访西湖大学副校长邓力:如何才能培养“不惧未知”的创新者
  • 河南发布高温橙警:郑州、洛阳等地最高气温将达40℃以上
  • 2025全球城市科技传播能力指数出炉,上海位列第六
  • 莫高义在第四届中国新闻发言人论坛开幕式上的致辞
  • 全国多家健身房女性月卡延长,补足因月经期耽误的健身时间
  • 首次公布!我国空间站内发现微生物新物种