Un mecanismo de codificación sencillo es el llamado SPADE.(“Simple Protocol Application Data Encoding”). Es interesante porque ilustra el problema desde su simplicidad. Usa ASCII, separado por “:” (dos puntos). Su sintaxis expresada en ABNF (rfc2234) es: element byte unsigned integer symbol list ; ; struct ; union-val ; ; PDIGIT ; = byte / integer / symbol / list / struct / union-val = OCTET = ("0" / PDIGIT *DIGIT) ":" = unsigned / ("-" PDIGIT *DIGIT ":") = ALPHA *(ALPHA / DIGIT / "-") ":" = unsigned *element unsigned determines the number of elements all elements must be of same type = 1*element number, type, and order depend on type = symbol unsigned [element] unsigned is the length of the element unsigned is 0 if element is omitted = %x31-39 1-9 Teniendo en cuenta las estructuras de datos: structure Header { String name String value } structure Message { List[Header] headers String body } union Command { send: Message m help: Null quit: Null } Escribir cómo se codificaría en SPADE las órdenes siguientes: − Pedir ayuda, − enviar mensaje de “Juan” a “Pedro” con texto “hola”. Imagina que has de proteger para limitar la distribución “ilegal” de un programa comercial: Mecanismos: - Número de serie: para “particularizarlo” cada caja del producto o cada CD llevará una etiqueta con un número o texto único. Al instalar el programa, para que pueda funcionar correctamente, hay que escribir el número/texto de serie en una casilla de la pantalla de bienvenida. Con ese número/texto de serie el programa podrá funcionar. Si el usuario quiere tener soporte, además ha de personalizarlo: conectarse a una página web donde hay un formulario que pide: nombre, número de serie, dirección de correo electrónico y devuelve un número/texto de usuario registrado. - Número de registro: para “personalizarlo”, una vez registrado en el fabricante, se obtiene un texto que puesto en un formulario del programa, hace que en la pantalla de bienvenida el programa diga que es una copia registrada y muestre el nombre del usuario registrado. Se pide: proponer qué mecanismos usarías para construir los números/textos de serie y de registro.