Soy nuevo en Java, por lo que me gustaría utilizar la solución estándar para, creo, la tarea estándar. La longitud de las etiquetas y los valores no se conocen.¿Hay un analizador de Java para BER-TLV?
Respuesta
Encontré Javacard clases para BER TLV. Espero que los ayuda
hice un analizador simple basado en la información proporcionada aquí: http://www.codeproject.com/Articles/669147/Simple-TLV-Parser
no sé si este apoyo código de toda la norma, pero funciona para mí.
public static Map<String, String> parseTLV(String tlv) {
if (tlv == null || tlv.length()%2!=0) {
throw new RuntimeException("Invalid tlv, null or odd length");
}
HashMap<String, String> hashMap = new HashMap<String, String>();
for (int i=0; i<tlv.length();) {
try {
String key = tlv.substring(i, i=i+2);
if ((Integer.parseInt(key,16) & 0x1F) == 0x1F) {
// extra byte for TAG field
key += tlv.substring(i, i=i+2);
}
String len = tlv.substring(i, i=i+2);
int length = Integer.parseInt(len,16);
if (length > 127) {
// more than 1 byte for lenth
int bytesLength = length-128;
len = tlv.substring(i, i=i+(bytesLength*2));
length = Integer.parseInt(len,16);
}
length*=2;
String value = tlv.substring(i, i=i+length);
//System.out.println(key+" = "+value);
hashMap.put(key, value);
} catch (NumberFormatException e) {
throw new RuntimeException("Error parsing number",e);
} catch (IndexOutOfBoundsException e) {
throw new RuntimeException("Error processing field",e);
}
}
return hashMap;
}
simple-tlv es diferente de ber-tlv, y un analizador de tlv simple a menudo chocará en los datos ber-tvl –
El proyecto contiene javaemvreadersome code to parse BER-TLV.
Puede utilizar este analizador BER-TLV: source code on git o download jar.
Ejemplos:
cómo analizar
byte[] bytes = HexUtil.parseHex("50045649534157131000023100000033D44122011003400000481F");
BerTlvParser parser = new BerTlvParser(LOG);
BerTlvs tlvs = parser.parse(bytes, 0, bytes.length);
Cómo construir
byte[] bytes = new BerTlvBuilder()
.addHex(new BerTag(0x50), "56495341")
.addHex(new BerTag(0x57), "1000023100000033D44122011003400000481F")
.buildArray();
podría ser this free library puede ser útil para usted. Lo he usado para el análisis simple de TLV. De todos modos, es con licencia de MIT y puedes modificarlo.
https://github.com/VakhoQ/tlv-encoder
- 1. ¿Hay un analizador de Java para el lenguaje Java?
- 2. ¿Hay un analizador de PDF para PHP?
- 3. ¿Hay un analizador de CSS para C#?
- 4. ¿Hay algún analizador de respuesta HTTP simple para Java?
- 5. ¿Hay un analizador de Go?
- 6. ¿Hay un analizador de HTML parecido a jsoup para PHP?
- 7. ¿Hay algún buen analizador X12 en Java?
- 8. ¿Hay un analizador de archivos de registro para archivos log4j?
- 9. ¿Hay un analizador de flex - bison para javascript?
- 10. Analizador/Analizador para Erlang?
- 11. Buscando un analizador de CSS en java
- 12. ¿Un analizador de esquema MySQL en Java?
- 13. Analizador de fecha/hora inteligente para Java
- 14. ¿Hay un analizador GEDCOM escrito en Python?
- 15. ¿Hay algún analizador EDIFACT de código abierto bueno en Java?
- 16. ¿Sugerencias para escribir un analizador de archivos en Java?
- 17. Analizador SGML en Java?
- 18. Necesita un evento CDATA notificando el analizador stax para java
- 19. Analizador de direcciones postales Java
- 20. Analizador de código fuente Java
- 21. ¿Hay un analizador de Java que pueda analizar direcciones como esta
- 22. ¿Hay un Analizador de compilación de Visual Studio?
- 23. Implementación de analizador ABNF de código abierto para Java?
- 24. Analizador JSON para J2ME
- 25. ¿Hay un buen analizador XML pequeño para un proyecto de C incrustado?
- 26. Tutoriales para escribir un analizador con Javascript
- 27. Analizador para Wikipedia
- 28. ¿Hay un equivalente Java para LINQ?
- 29. ¿Ya hay una biblioteca/analizador YAML para MATLAB?
- 30. ¿Hay un Java SDK para cygwin?
¿podría ser éste el que necesita? https://github.com/VakhoQ/tlv-encoder – grep