2009-10-19 6 views
3

Как вычислить хэш SHA1 или MD5 в iReport при выполнении отчета? Мне нужно сравнить предварительно вычисленный хеш с полем, связанным с базой данных (строка).Вычислить хэш SHA1 или MD5 в iReport

Использование iReport 2.0.5 (Старый) и Блок отчетов встроен в коммерческое приложение.

ответ

5

Я использовал отчеты iReport и Jasper несколько лет назад, и я не помню подробностей, но я помню, что вы могли бы каким-то образом оценить код 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/

+0

Спасибо! Я обязательно проверю это. –

+1

Ну. Я смог получить импорт для классов дайджеста и исключений сообщений и вычислить хеши. Вот переменная результата. http://pastebin.com/f5dabd0a9 Что странно в консоли, выражение выполняется дважды. Таким образом печатает дважды. Моя следующая цель - вернуть этот java-код для возврата в переменную boolean. Не знаю, как это сделать. –

Смежные вопросы