barbitoff programmer`s blog

Здесь я публикую заметки из программерской жизни: грабли, на которые мне случилось наступить, проблемы, для которых было найдено элегантное (или не очень) решение, а также все, с чем мне пришлось столкнуться и чем хотелось бы поделиться =)
PS Если хотите меня поблагодарить - на странице есть 3 места, чтобы это сделать =)
Показаны сообщения с ярлыком Apache Commons Codec. Показать все сообщения
Показаны сообщения с ярлыком Apache Commons Codec. Показать все сообщения

вторник, 4 декабря 2012 г.

Commons Codec 1.4: encodeBase64String и multi-line chunking

Версии Commons Codec до 1.5 выполняют multi-line chunking (разбитие результата на строки равной длины) при вызове encodeBase64String(byte[] binaryData): http://commons.apache.org/codec/apidocs/org/apache/commons/codec/binary/Base64.html#encodeBase64String(byte[]). Т.к. в WSO2 ESB 4.5.1 входит именно версия 1.4, приходится с этим мириться. Если нужно все же получить результат одной строкой, придется сделать replace:
Base64.encodeBase64String(strToEncode).replace(System.lineSeparator(),"")
Или, для 6ой явы:
Base64.encodeBase64String(strToEncode).replace(System.getProperty("line.seperator"),"")

понедельник, 23 июля 2012 г.

Получение thumbprint`а для X509Certificate в Java

Класс java.security.cert.X509Certificate не предоставляет соответствующего метода, поэтому приходится делать это вручную. Можно непосредственно, используя MessageDigest (http://stackoverflow.com/questions/1270703/how-to-retrieve-compute-an-x509-certificates-thumbprint-in-java), а можно воспользоваться классом DigestUtils из библиотеки commons-codec:
public static String getHexThumbprint(X509Certificate cert) throws CertificateEncodingException
{
return DigestUtils.shaHex(cert.getEncoded());  
}
public static byte[] getThumbprint(X509Certificate cert) throws NoSuchAlgorithmException, CertificateEncodingException
{
return DigestUtils.sha(cert.getEncoded());
}