def i2osp(x, x_len):

def i2osp(x, x_len):

de Rodrigo Jorgeluis Laguna Queirolo -
Número de respuestas: 8

Tengo una duda aca. Segun lo que entendi de las especificaciones, habria que lograr algo asi:

llamando a i2osp(353,10) retorna el string
97100000000
notar que 353 = 97*256**0 + 1*256**1.

que es basicamente, el 353 escrito en base 256. Mi pregunta es, que pasa con aquellos numeros, como el 97 de este caso? debemos escribirlo como 79? como se diferencia si es un 97,1 como en este caso o un 9,71?
Creoq ue el problema esta en escribir algo en base 256 usando 10 digitos. Los separamos? agregamos ams digitos?

 

En respuesta a Rodrigo Jorgeluis Laguna Queirolo

Re: def i2osp(x, x_len):

de Alejandro Añon Mallo -

Cuando pones i2osp(353,10) tiene que devolver:

'00 00 00 00 00 00 00 00 01 61'

que es 1*16^0 + 6*16^1 + 1*16^2 = 353. Fijate los ejemplos que puso el profesor en el foro de novedades. (https://eva.fing.edu.uy/mod/forum/discuss.php?d=47752)

Saludos.

En respuesta a Alejandro Añon Mallo

Re: def i2osp(x, x_len):

de Rodrigo Jorgeluis Laguna Queirolo -

Lei el ejemplo. Sigo sin entender. El profe, a juzgar por el primer ejemplo y lo que dicen las especificaciones trabaja en base 256.
Creo que el analogo a eso seria

llamando a i2osp(353,10) retorna el string
97 1 0 0 0 0 0 0 0 0
notar que 353 = 97*256**0 + 1*256**1

El trabajó con parejas en hexa. La opcion que yo tome seria decimales de largo variable (entre 1 y 3).

Respecto a la parte de os2ip(x), asumo que el formato en que viene x dado es el mismo en que sale del i2osp?

Gracias!

En respuesta a Rodrigo Jorgeluis Laguna Queirolo

Re: def i2osp(x, x_len):

de Nathan Ryan -

No trabajo en base 256.  Trabajo en octetos (o sea un byte en base 2) y los escribo en base 16.  P.ej,

353 = 256 + 6*16 +1 <---> 161 en base 16

pero como tienen que ser octetos 161 ----> 0161 y, siguiendo la norma de los vectores de prueba en ejercicio 7 (con x_len=2) lo escribo como

01 61

La segunda duda: espero que este ejemplo lo explica.

 

os2ip(i2osp(11231,10))

i2osp(os2ip('00 00 de ad be ef'),5)

 

Saludos,

Nathan

 

 

En respuesta a Nathan Ryan

Re: def i2osp(x, x_len):

de Octavio Perez Kempner -

Nathan, finalmente mis salidas en los casos de prueba que publicaste para las funciones  i2osp y os2ip fueron:

0100
0000112210f4b2d230a2
000000000000000000000006b14e9f95da1aff57
00000000000000002bdf
11231
00deadbeef

Me alejé de las especificaciones de RSA y traté de acercarme a tu interpretación. En i2osp, recibo un entero, lo paso a un octect string y finalmente lo formateo como un string de hexadecimales (a 2 octetos les corresponde un valor en hexadecimal). En cuanto a os2ip, recibo un string que leo como un número hexadecimal y retorno su valor entero (aquí asumo que quien llama no me pasa strings de la forma "$(7de215").

Son válidas dichas interpretaciones o debería modificar alguna cuestión?

Saludos,

Octavio

En respuesta a Octavio Perez Kempner

Re: def i2osp(x, x_len):

de Nathan Ryan -

No veo como te alejaste de las especificaciones.  O sea, en los archivos oaep-int.txt y oaep-vect.txt dicen que una cadena tipo

000000000000000000000006b14e9f95da1aff57

es un cadena de octetos escritas en hexadecimal.  Me parece que eso es lo que vos estás haciendo.  Me parece que lo tenés bien.

 

Saludos,

Nathan

 

 

En respuesta a Nathan Ryan

Re: def i2osp(x, x_len):

de Octavio Perez Kempner -

Bien, cuando digo que me alejé, me refiero a que en las especificaciones se habla de octetos y no de hexadecimales (a pesar de que la conversión de uno a otro sea casi inmediata).

Gracias por la respuesta, me deja más confiado.

Saludos,

Octavio

 

 

En respuesta a Nathan Ryan

Re: def i2osp(x, x_len):

de Rodrigo Jorgeluis Laguna Queirolo -

no me queda claro... es necesario el formato "xx xx xx xx xx" o alcanza con que sea "xxxxxxxxxx"??
O sea, los espacios cada dos caracteres, son necesarios?

Gracias!