python操作java文件的一种方法

对于python操作java代码的场景来说,比较多的可能就是涉及加密的场景,尤其涉及到登录的场景,对于输入的账号密码可能会涉及到加密,如果开发告诉我们如何加密,那么,OK,我们可以直接通过代码去实现,如果不知道,对于我们的自动化来说,我们可以通过操作开发的java文件,也就是说,让开发同学提供jar包或者java文件
比如说如下的java文件

import java.math.BigInteger;
import java.security.MessageDigest;

public class MD5Util {
    public static String getMD5String(String str) {
        try {
           
            MessageDigest md = MessageDigest.getInstance("MD5"); 
            md.update(str.getBytes()); 
            return new BigInteger(1, md.digest()).toString(16);
        } catch (Exception e) {
            e.printStackTrace();
            return null;
        }
    }

    public static void main(String[] args) {
        System.out.println(getMD5String(args[0]));
    }
}

其中
类比python文件,我们可以知道MD5Util 是一个类,getMD5String是一个方法,其中这个方法还传递了字符串参数,知道了这些,我们就可以用我们的python代码去实现了

我们使用我们的jpype1库,直接pip install即可

import jpype

jvm_path = jpype.getDefaultJVMPath()
jpype.startJVM(jvm_path,'-ea','-Djava.class.path={}'.format('./MD5util.jar'),convertStrings=False)
jclass = jpype.JClass('MD5Util')  # 加载类
calc = jclass()  # 传入所需参数
value = calc.getMD5String("123456")  # 调用类中的getMD5String方法
print(value)
jpype.shutdownJVM()  # 关闭JAVA虚拟机

从原理上来讲,我们要安装好jdk并配置好环境变量,也就是说,我们需要有一个java的虚拟环境
jvm_path 获取jvm路径
jpype.startJVM(jvm_path,‘-ea’,‘-Djava.class.path={}’.format(‘./MD5util.jar’),convertStrings=False) 启用虚拟机,同时传递一些参数,并且也需要对应的jar包路径
jclass = jpype.JClass(‘MD5Util’) 这里就是加载类方法,括号里面的就是我们可以替换成对应java文件里面的类的方法

calc = jclass() # 传入所需参数
value = calc.getMD5String(“123456”) 之后,实例化我们的对应方法,传对应的参数,这里的getMD5String就是java文件里面对应的方法,找到自己的,替换即可

最后打印出来

关闭虚拟机即可

这里我们实际运行一下:
在这里插入图片描述
我们发现成功了

以上
这里我们采用的是md5加密,有可能人家会自定义一些加密方法,我们都可以类比这种方式进行获取加密方式的结果

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

木土雨成小小测试员

你的鼓励将是我最大的创作动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值