电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

Python調(diào)用jar包方法實(shí)現(xiàn)過(guò)程解析

瀏覽:3日期:2022-07-14 13:41:58

需求

最近在后臺(tái)項(xiàng)目代碼中一段自定義的AES加解密的程序在平時(shí)的測(cè)試工作中應(yīng)用頻繁。因?yàn)閷懩_本經(jīng)常會(huì)需要使用,而經(jīng)過(guò)各種嘗試,比如jpype等,都不盡如人意。最后轉(zhuǎn)換思路找到了一種好方法:

1. 將java項(xiàng)目打成jar包;

2. 設(shè)定jar包的Main-class屬性;

3. 在python中通過(guò)subprocess執(zhí)行jar包。

修改main函數(shù)打jar包

在intellij中打jar包:

1. File--> Project Structure... --> Artifacts --> + --> JAR --> From modules with dependencies --> OK --> 勾選Include in project build --> 記錄上方Output directory路徑 --> OK;

2. Build --> Build Project --> 之后就可以在Output directory路徑看到打的jar包了;

3. 用WinRAR打開(kāi)jar包,修改其中META-INF文件夾下的MANIFEST.MF文件,增加一行Main-class入口,例如:'Main-class: com.package.name.Classname',注意冒號(hào)后面空一格,文件最后空一行。

注意:執(zhí)行jar包就是執(zhí)行jar包的Main-class中的main函數(shù)。所以如果要在python中調(diào)用java方法并傳參的話,要在打jar包前修改Main-class中的main方法,Main-class也就是目標(biāo)java類。

在Main-class的main函數(shù)中可以設(shè)置傳參:

String data= args[0];String key = args[1];// 調(diào)用解密程序并打印解密結(jié)果

這里data是密文,key是密鑰。

編寫python腳本

然后對(duì)應(yīng)寫python腳本,這里設(shè)定python文件名為aes.py,假定我們用來(lái)解密的jar包名為aes.jar:

import subprocessimport chardetimport sysclass AES(object): def __init__(self, data, key): self.data = data self.key = key def decrypt(self):command = 'java -jar aes.jar' arg0 = self.data arg1 = self.key cmd = [command,arg0,arg1] new_cmd = ' '.join(cmd) stdout,stderr = subprocess.Popen(new_cmd,stdout=subprocess.PIPE,stderr=subprocess.PIPE).communicate() encoding = chardet.detect(stdout)['encoding'] result = stdout.decode(encoding) return resultif __name__ == ’__main__’: data = sys.argv[1] key = sys.argv[2] AES = AES(data,key) print(AES.decrypt())

這里為了與jar包的兩個(gè)傳參相對(duì)應(yīng)也設(shè)置python腳本需要傳入兩個(gè)參數(shù),第一個(gè)是待解密的數(shù)據(jù)data,第二個(gè)是解密鑰匙key。

這里我們創(chuàng)建一個(gè)文件夾aes,將aes.py和aes.jar放到該文件夾下,二者同處于aes根目錄下。

然后在當(dāng)前目錄下啟動(dòng)cmd,執(zhí)行python腳本,傳入data和key兩個(gè)參數(shù)給python腳本:

python aes.py '待解密的字符串' '密鑰'

在python腳本會(huì)將這兩個(gè)參數(shù)再傳遞給jar包并調(diào)用jar包Main-class的main函數(shù)中調(diào)用解密過(guò)程并打印解密結(jié)果。

這樣就可以在python中調(diào)用java的解密程序,從而打印出解密后的字符串了。

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持好吧啦網(wǎng)。

標(biāo)簽: Python 編程
相關(guān)文章:
主站蜘蛛池模板: 整车VOC采样环境舱-甲醛VOC预处理舱-多舱法VOC检测环境仓-上海科绿特科技仪器有限公司 | 济南保安公司加盟挂靠-亮剑国际安保服务集团总部-山东保安公司|济南保安培训学校 | 电镀电源整流器_高频电解电源_单脉双脉冲电源 - 东阳市旭东电子科技 | 深圳货架厂_仓库货架公司_重型仓储货架_线棒货架批发-深圳市诺普泰仓储设备有限公司 | 雨水收集系统厂家-雨水收集利用-模块雨水收集池-徐州博智环保科技有限公司 | 油缸定制-液压油缸厂家-无锡大鸿液压气动成套有限公司 | 煤机配件厂家_刮板机配件_链轮轴组_河南双志机械设备有限公司 | 真空包装机-诸城市坤泰食品机械有限公司 | 意大利Frascold/富士豪压缩机_富士豪半封闭压缩机_富士豪活塞压缩机_富士豪螺杆压缩机 | 东莞注册公司-代办营业执照-东莞公司注册代理记账-极刻财税 | 等离子表面处理机-等离子表面活化机-真空等离子清洗机-深圳市东信高科自动化设备有限公司 | 【电子厂招聘_普工招工网_工厂招聘信息平台】-工立方打工网 | 高低温老化试验机-步入式/低温恒温恒湿试验机-百科 | SDG吸附剂,SDG酸气吸附剂,干式酸性气体吸收剂生产厂家,超过20年生产使用经验。 - 富莱尔环保设备公司(原名天津市武清县环保设备厂) | 超声波清洗机_超声波清洗机设备_超声波清洗机厂家_鼎泰恒胜 | 恒温恒湿箱(药品/保健品/食品/半导体/细菌)-兰贝石(北京)科技有限公司 | 锂电池砂磨机|石墨烯砂磨机|碳纳米管砂磨机-常州市奥能达机械设备有限公司 | 发电机组|柴油发电机组-批发,上柴,玉柴,潍柴,康明斯柴油发电机厂家直销 | 上海心叶港澳台联考一对一培训_上海心叶港澳台联考,港澳台联考一对一升学指导 | 煤棒机_增碳剂颗粒机_活性炭颗粒机_木炭粉成型机-巩义市老城振华机械厂 | 青岛侦探_青岛侦探事务所_青岛劝退小三_青岛调查出轨取证公司_青岛婚外情取证-青岛探真调查事务所 | 南京兰江泵业有限公司-水解酸化池潜水搅拌机-絮凝反应池搅拌机-好氧区潜水推进器 | 热熔胶网膜|pes热熔网膜价格|eva热熔胶膜|热熔胶膜|tpu热熔胶膜厂家-苏州惠洋胶粘制品有限公司 | 智慧农业|农业物联网|现代农业物联网-托普云农物联网官方网站 | 北京森语科技有限公司-模型制作专家-展览展示-沙盘模型设计制作-多媒体模型软硬件开发-三维地理信息交互沙盘 | 防火门|抗爆门|超大门|医疗门|隔声门-上海加汇门业生产厂家 | LED灯杆屏_LED广告机_户外LED广告机_智慧灯杆_智慧路灯-太龙智显科技(深圳)有限公司 | 2-羟基泽兰内酯-乙酰蒲公英萜醇-甘草查尔酮A-上海纯优生物科技有限公司 | 洛阳网站建设_洛阳网站优化_网站建设平台_洛阳香河网络科技有限公司 | 合肥礼品公司-合肥礼品定制-商务礼品定制公司-安徽柏榽商贸有限公司 | 电梯乘运质量测试仪_电梯安全评估测试仪-武汉懿之刻 | 诸城网站建设-网络推广-网站优化-阿里巴巴托管-诸城恒泰互联 | 烟台游艇培训,威海游艇培训-烟台市邮轮游艇行业协会 | 硬度计,金相磨抛机_厂家-莱州华煜众信试验仪器有限公司 | 直流电能表-充电桩电能表-导轨式电能表-智能电能表-浙江科为电气有限公司 | 耐酸碱胶管_耐腐蚀软管总成_化学品输送软管_漯河利通液压科技耐油耐磨喷砂软管|耐腐蚀化学软管 | 搅拌磨|搅拌球磨机|循环磨|循环球磨机-无锡市少宏粉体科技有限公司 | 制冷采购电子商务平台——制冷大市场 | 重庆中专|职高|技校招生-重庆中专招生网 | 河南橡胶接头厂家,河南波纹补偿器厂家,河南可曲挠橡胶软连接,河南套筒补偿器厂家-河南正大阀门 | 计算机毕业设计源码网|