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

datax 加密

应用场景

datax任务四json配置的,涉及到数据库连接的密码也是明文存储的,严格来说存在账户密码泄露的风险,因此本文主要讲解如何对密码进行加密

datax本身的支持

datax本身实际上支持对json中某个key的value加密,但是官方并没有详细的文档,毕竟开源让你免费用就不错了,公布不负有心人,通过对源码部分的阅读找到了如何使用加密的方式,本文将按照步骤讲解。

详细步骤

1. 下载源码找到com.alibaba.datax.core.util.SecretUtil 中的initKey()函数,用于获取公钥和私钥

请自己找到这个函数,并自己调用,将获取到的公钥和私钥保存下来

2.配置公钥和私钥

 vim $DATAX_HOE/conf/.secret.properties```shell
#ds basicAuth config
auth.user=
auth.pass=
current.keyVersion=v1
# 公钥
current.publicKey=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCAdNyOSpqao0mRQFGsB2qYBq08ctgOHQE4KkTyVBQpjrfdn4aV6/oTvy6s7SONaRPhtjDaNPdUv4idPnyHD5lN0pbYR1z429TnUkdXiyYYG3LzLR6qaVT2+Dty8MVdMzhfNadDh9jayntJq84tOCFw9wh6chF7k7cYWssxuF+bmwIDAQAB
# 私钥
current.privateKey=MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBAIB03I5KmpqjSZFAUawHapgGrTxy2A4dATgqRPJUFCmOt92fhpXr+hO/LqztI41pE+G2MNo091S/iJ0+fIcPmU3SlthHXPjb1OdSR1eLJhgbcvMtHqppVPb4O3LwxV0zOF81p0OH2NrKe0mrzi04IXD3CHpyEXuTtxhayzG4X5ubAgMBAAECgYBGc9GjmPdCaNwodgZVO5wS1VaeGL62vuG0VDqMTeDhCg1918iQ4WO/ANQws78UB9WHrc0NYI9mQ8ZBt8vEp6GEbT0FZd18GRHLJnl2yub/nrA0sQjCAnfqZvvb7Y14gs7a4YY23Wtkw/N2pY3qbzJyrIbz78PDs2r8jS380DaYgQJBAMmDyepVnP+oWkheW00o5OjgRzK5cosAGNym5B1W1fljJJaycflcc6GDw0oxJpfxSaKEjEcsEn+R+nc7qdJk1SMCQQCjMDW23JyYyN4Aedd15lWDtc2HbtNk5hGQ92SnCUr/qdQdnAt6EmjCk5/0+1Lh2TFO+hkx2Xo8GHfMWky2JrMpAkBX+IJzHEDXkuUm5poxCwMzboVmbXLFn5s66Fh5PmlW36MfbnM3Ctcn0V+1ydMxTZJ5sieTAnho3I9c8dznDkHFAkBtaK4qqqBnIw0MnqPhTQt6YdKpgZlDZajTW7pk7ysUXCV1sKBVOLB5/AXbdwDroPWZML7hmCCG2BTBsq0J1sp5AkEAtth0wUmfvDFL2oQjD2mVoHXTZJkspPuxYdXnnLB6QF6XHPYRDyA+2U0tEYgDIQfB2Ez05JpbPziuH4cChpgMcg==
current.service.username=
current.service.password=

3. 利用公钥运行下面的代码,对密码进行加密

import base64
from Crypto.PublicKey import RSA
from Crypto.Cipher import PKCS1_v1_5
from Crypto import RandomENCODING = 'utf-8'
KEY_ALGORITHM_RSA = 'RSA'def encrypt_rsa(data: str, public_key_str: str) -> str:"""使用RSA公钥加密数据:param data: 要加密的字符串数据:param public_key_str: Base64编码的公钥字符串:return: Base64编码的加密结果"""try:# 解码Base64公钥key_bytes = base64.b64decode(public_key_str)# 加载公钥public_key = RSA.import_key(key_bytes)# 创建加密器cipher = PKCS1_v1_5.new(public_key)# 加密数据encrypted_data = cipher.encrypt(data.encode(ENCODING))# 返回Base64编码的加密结果return base64.b64encode(encrypted_data).decode(ENCODING)except Exception as e:raise Exception("RSA加密出错") from e# 使用示例
if __name__ == "__main__":# 示例公钥(实际使用时替换为你的公钥)public_key = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCAdNyOSpqao0mRQFGsB2qYBq08ctgOHQE4KkTyVBQpjrfdn4aV6/oTvy6s7SONaRPhtjDaNPdUv4idPnyHD5lN0pbYR1z429TnUkdXiyYYG3LzLR6qaVT2+Dty8MVdMzhfNadDh9jayntJq84tOCFw9wh6chF7k7cYWssxuF+bmwIDAQAB"data_to_encrypt = "mysqlgame123"try:encrypted = encrypt_rsa(data_to_encrypt, public_key)print(f"加密结果: {encrypted}")except Exception as e:print(f"加密失败: {str(e)}")

4. 按要求配置json任务文件

  • 要求一:要求被加密的key以*开头
  • 要求二:将第三步加密后的密码放在一下*password中
  • 要求三:settining中的keyVersion和.secret.properties中的current.keyVersion保持一致
{"job": {"setting": {"speed": {"channel": 2},"errorLimit": {"record": 0,"percentage": 0},"keyVersion":"v1"},"content": [{"reader": {"name": "mysqlreader","parameter": {"username": "数据库用户名","*password": "此处就是第三步中对明文密码进行加密后的密文密码","column": ["列1","列2"],"splitPk": "","where": "","connection": [{"table": ["表名"],"jdbcUrl": ["jdbc:mysql://ip:3306/库名?serverTimezone=Asia/Shanghai"]}]}},"writer": {"name": "streamwriter","parameter": {"print": true,"encoding": "UTF-8"}}}]}
}
~     

相关文章:

  • Qt 安装 QtMqtt 模块
  • vue3.0的name属性插件——vite-plugin-vue-setup-extend
  • 4寸工业三防手持机PDA,助力仓储高效管理
  • Elasticsearch相关面试题
  • RHCSA 考试操作手册(基于红帽企业 Linux 8/9 版本)​
  • fpga系列 HDL : Microchip FPGA开发软件 Libero Soc 安装 license申请
  • 对心理幸福感含义的探索 | 幸福就是一切吗?
  • Android开发-使用内容组件获取通讯信息
  • 【MySQL】第四弹——表的CRUD进阶(二)数据库设计
  • 《Python星球日记》 第78天:CV 基础与图像处理
  • 2025年黑客扫段攻击激增:如何构建智能防御体系保障业务安全?
  • R S的EMI接收机面板
  • 从 Vue3 回望 Vue2:组件设计升级——Options API vs Composition API
  • 交叉编译源码的方式移植ffmpeg-rockchip
  • 20250515配置联想笔记本电脑IdeaPad总是使用独立显卡的步骤
  • 力扣-46.全排列
  • 【QGIS二次开发】地图显示与交互-03
  • 嵌入式开发中使用 MySQL 数据库常见问题及解决办法
  • CSS3 变形
  • 行为型模式:责任链模式
  • 魔都眼|锦江乐园摩天轮“换代”开拆,新摩天轮暂定118米
  • 俄方代表团抵达土耳其,俄乌直接谈判有望于当地时间上午重启
  • 山东:小伙为救同学耽误考试属实,启用副题安排考试
  • 女外交官郑璇已任中国驻莫桑比克大使
  • 赖清德为“临阵脱逃”作准备,国台办:绝不会任“台独”祸首逍遥法外
  • 横跨万里穿越百年,《受到召唤·敦煌》中张艺兴一人分饰两角