当前位置: 首页 > 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"}}}]}
}
~     
http://www.xdnf.cn/news/468757.html

相关文章:

  • 除了GC哪些地方有用到安全点
  • Bismark甲基化提取器
  • 大数据架构选型分析
  • 无人机动力系统全解析:核心组件、工作原理与实用指南
  • 失控的产品
  • jedis+redis pipeline诡异的链接损坏、数据读取异常问题解决
  • psycopg_pool.PoolTimeout: couldn‘t get a connection after 120.00 sec异常
  • 《软件测试架构实践与精准测试》| 合乎发展的灰度管理
  • springboot+vue实现在线书店(图书商城)系统
  • CertiK荣获以太坊基金会两项资助,领跑zkEVM形式化验证
  • SGLang、Ollama、vLLM和LLaMA.cpp推理框架的对比及选型建议
  • Java集合详解:HashMap
  • cnn卷积神经网络
  • 关于词向量的思考
  • mvc-service引入
  • 数据结构中链表的含义与link
  • uniapp-vue3项目中引入高德地图的天气展示
  • QMK键盘固件旋钮编码器(Encoder)配置详解(实操部分)
  • 盒带自编教材《软件工程》目录
  • 火山RTC 8 SDK集成进项目中
  • TLV格式
  • linux备份与同步工具rsync
  • [数据结构]8. 树-Tree
  • ES8.x基础知识学习提纲
  • 阿里开源通义万相Wan2.1-VACE-14B:用于视频创建和编辑的一体化模型
  • 【hot100-动态规划-139.单词拆分】
  • 第九讲 | 模板进阶
  • 每周靶点:TIGIT、ICAM1及文献分享
  • 2025ICPC陕西省赛题解一
  • 开机自启动python程序_ubuntu22.04