易语言利用Java支持库调用Java类实现标准DES加解密

综合分类 2年前 (2018) Mgo
0


在学习过程中参考了fangzhiguo的[利用易语言java支持库开发易语言版javaJDK],特此感谢。

近来在写一个手机程序,用到了DES加密算法,论坛只有testtset的加密解密算法可以使用,还有几个支持库不支持这种标准DES加解密。

虽然最后是使用Delphi的算法解决了问题,但是利用Java的学习途径也值得记录一下。

代码中的签名使用[Java类的类型签名(Type Signature)查询] " -classpath C:\des.jar kjkj.DES" 查看的。

第一步 生成JAR

1、DES.java:以下为部分代码

package kjkj;

......

public class DES {

......

public static String encode(String key, String data) throws Exception {

    return encode(key, data.getBytes());

}

public static String encode(String key, byte[] data) throws Exception {

try {

            DESKeySpec dks = new DESKeySpec(key.getBytes());

            SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES");

            Key secretKey = keyFactory.generateSecret(dks);

            Cipher cipher = Cipher.getInstance("DES/ECB/NoPadding");        

            cipher.init(Cipher.ENCRYPT_MODE, secretKey);        

            byte[] bytes = cipher.doFinal(data);            

            //JOptionPane.showMessageDialog(null, bytesToHexString(bytes),"窗口标题",1);

            return bytesToHexString(bytes);

        } catch (Exception e) {

            throw new Exception(e);

        }

    }

}

2、生成jar包

    导出--jar

第二步 E调用

自定义类型:

    .版本 2





    .数据类型 Object_Java, 公开

        .成员 object标识, 整数型





    .数据类型 String_Java, 公开

        .成员 StringObject, Object_Java

        .成员 文本型, 文本型

        .成员 附加1, 整数型

代码:

    .版本 2

    .支持库 Javalib

    .支持库 spec





    .子程序 调用java类, , 公开

    .参数 参数1, 文本型

    .参数 参数2, 文本型

    .局部变量 虚拟机, Java虚拟机

    .局部变量 java接口, Java本地接口

    .局部变量 类标识, 整数型

    .局部变量 方法标志符, 整数型

    .局部变量 返回结果, String_Java

    .局部变量 创建, 逻辑型

    .局部变量 结果, 逻辑型





    创建 = 虚拟机.创建 (“C:\;C:\des.jar”, “C:\;”)

    调试输出 (创建)

    信息框 (创建, 0, )

    类标识 = java接口.加载类 (“kjkj.DES”)

    调试输出 (类标识)

    信息框 (类标识, 0, )

    方法标志符 = java接口.取静态方法标志符 (类标识, “encode”, “(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;”)

    调试输出 (方法标志符)

    信息框 (方法标志符, 0, )

    结果 = java接口.静态对象方法 (类标识, 方法标志符, 返回结果.StringObject.object标识, java接口.创建字符串 (参数1), java接口.创建字符串 (参数2))

    调试输出 (结果)

    信息框 (结果, 0, )

    返回结果.文本型 = java接口.取字符串文本 (返回结果.StringObject.object标识, )

    调试输出 (返回结果.文本型)


易语言官方转过来的

版权声明:Mgo 发表于 2018-10-23 16:47:50。
转载请注明:易语言利用Java支持库调用Java类实现标准DES加解密 | 站长聚集地

暂无评论

暂无评论...