近来在写一个手机程序,用到了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标识, )
调试输出 (返回结果.文本型)
易语言官方转过来的
发表评论: