前言:
公司要测试对外接口,接口中的数据又涉及到加密的问题,而python对加密数据进行位运算后,居然无法逆向位运算回来了(应该是个人能力不够吧),只好调用同事之前用的java代码中的函数去解码了,花的时间挺多的,顺便记录一下使用调用Python调用Java代码的方法。
安装第三方库:jpype
pip.exe install -i https://pypi.tuna.tsinghua.edu.cn/simple/ jpype1
将Java文件打包成jar包:
1、生成class文件:
进入到所需要使用的Java文件所在目录后,按住shift键加鼠标右键,点击在此处打开命令行(或PowerShell),在cmd命令行中输入以下命令生成class文件
javac java文件名.java
2、将class文件打包成jar包
生成class文件后,继续在命令行中输入以下代码,将class打包成jar包:
jar -cvf jar包文件名.jar class文件名.class(有多个class文件的话,使用空格隔开) 保存目录
实现代码:
jpype.startJVM('C:\\Program Files\\Java\\jdk1.8.0_202\\jre\\bin\\server\\jvm.dll',
'-ea',
"-Djava.class.path=jar包路劲")
JavaClass = jpype.JClass('AESUtil') # 括号中填写class包中的类名
jc = JavaClass() # 实例化对象
return jc.decrypt(strings, key, iv) # 调用class中的函数并传入参数
注意事项:
1、使用命令行将Java文件转换为class文件时,java文件中,注释的内容尽量不要包含中文,否则会出现报错
2、startJVM方法暂时不知道为什么,用pycharm敲代码的时候没有提示,但不影响使用
YX9010_0@的第八篇文章
2022/01/10