在iReport中计算SHA1或MD5哈希值

3

如何在iReport报告执行时计算SHA1或MD5哈希?我需要将预先计算的哈希与数据库驱动字段(字符串)进行比较。

使用旧版本的iReport 2.0.5,并且报告引擎嵌入到商业应用程序中。

1个回答

5

我几年前使用过iReport和Jasper Reports,虽然我不记得细节了,但我记得你可以以某种方式输入Java代码进行评估。 使用该功能,您可以在几行中计算MD5:

String encryptionAlgorithm = "MD5";
String valueToEncrypt = "StackOverflow";
MessageDigest msgDgst = MessageDigest.getInstance(encryptionAlgorithm);
msgDgst.update(valueToEncrypt.getBytes(), 0, valueToEncrypt.length());
String md5 = new BigInteger(1, msgDgst.digest()).toString(16) ;
System.out.println(md5);

需要导入java.math.BigInteger、java.security.MessageDigest和java.security.NoSuchAlgorithmException;

计算SHA1散列值几乎相同:

String encryptionAlgorithm = "SHA-1";
String valueToEncrypt = "StackOverflow";
MessageDigest msgDgst = MessageDigest.getInstance(encryptionAlgorithm);
byte[] sha1hash = new byte[40];
msgDgst.update(valueToEncrypt.getBytes(), 0, valueToEncrypt.length());
sha1hash = md.digest();

请查看此博客文章,了解可以在报告运行时评估的变量创建 http://www.eakes.org/77/java-injection-in-jasper-reports/


谢谢!我一定会去查看。 - Israel Lopez
1
好的。我已经成功导入了消息摘要和异常类,并计算了哈希值。这是结果变量。http://pastebin.com/f5dabd0a9奇怪的是,在控制台中表达式运行了两次。因此打印了两次。我的下一个目标是让这个Java代码将布尔值返回给变量。还不确定如何做到这一点。 - Israel Lopez

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接