librelist archives

« back to archive

Encriptación compartida entre Ruby y Java

Encriptación compartida entre Ruby y Java

From:
Hugo M
Date:
2011-05-28 @ 19:23
Conocen algún tutorial donde muestren como, por ejemplo, encriptar en un
server Rails y desencriptar en un programa en Java?

Sería con clave simétrica, el algoritmo no me importa demasiado  mientras
sea relativamente seguro (AES, TripleDES, etc.) como para que no pueda ser
roto por una máquina común en poco tiempo. Lo estuve intentando pero desde
Java me cuesta desencriptar algo encriptado con Ruby (y la librería
openSSH).

Saludos!

Re: Encriptación compartida entre Ruby y Java

From:
Hugo M
Date:
2011-05-28 @ 19:36
Este es mi código Ruby:

  def initialize
    @cipher = OpenSSL::Cipher::Cipher.new('des')
    #@cipher = OpenSSL::Cipher::Cipher.new("aes-256-cbc")
  end

  def encrypt(param1, param2, app_salt, data)
    @cipher.encrypt
    @cipher.key = create_key(param1, param2, app_salt)

    # Encrypted
    encrypted = @cipher.update(data) + @cipher.final
    encrypted = encrypted # Send along the IV

    # Lets pretty up the encrypted string
    encrypted = Base64.encode64(encrypted)
    encrypted = URI.escape(encrypted)
  end

  private
  def create_key(param1, param2, app_salt)
    Digest::MD5.hexdigest(param1 + param2 + app_salt)
  end

El 28 de mayo de 2011 16:23, Hugo M <ham1988@gmail.com> escribió:

> Conocen algún tutorial donde muestren como, por ejemplo, encriptar en un
> server Rails y desencriptar en un programa en Java?
>
> Sería con clave simétrica, el algoritmo no me importa demasiado  mientras
> sea relativamente seguro (AES, TripleDES, etc.) como para que no pueda ser
> roto por una máquina común en poco tiempo. Lo estuve intentando pero desde
> Java me cuesta desencriptar algo encriptado con Ruby (y la librería
> openSSH).
>
> Saludos!
>

Re: Encriptación compartida entre Ruby y Java

From:
Hugo M
Date:
2011-05-28 @ 19:40
Algo que me llama la atención es que supuestamente des acepta claves de 56
bits nada más, el md5 tira de 128, y esto no me lanza ningún error (probé
cambiando de cifrado y nunca me tiró ningún error). Este comportamiento es
normal?

El 28 de mayo de 2011 16:36, Hugo M <ham1988@gmail.com> escribió:

> Este es mi código Ruby:
>
>   def initialize
>     @cipher = OpenSSL::Cipher::Cipher.new('des')
>     #@cipher = OpenSSL::Cipher::Cipher.new("aes-256-cbc")
>   end
>
>   def encrypt(param1, param2, app_salt, data)
>     @cipher.encrypt
>     @cipher.key = create_key(param1, param2, app_salt)
>
>     # Encrypted
>     encrypted = @cipher.update(data) + @cipher.final
>     encrypted = encrypted # Send along the IV
>
>     # Lets pretty up the encrypted string
>     encrypted = Base64.encode64(encrypted)
>     encrypted = URI.escape(encrypted)
>   end
>
>   private
>   def create_key(param1, param2, app_salt)
>     Digest::MD5.hexdigest(param1 + param2 + app_salt)
>   end
>
> El 28 de mayo de 2011 16:23, Hugo M <ham1988@gmail.com> escribió:
>
> Conocen algún tutorial donde muestren como, por ejemplo, encriptar en un
>> server Rails y desencriptar en un programa en Java?
>>
>> Sería con clave simétrica, el algoritmo no me importa demasiado  mientras
>> sea relativamente seguro (AES, TripleDES, etc.) como para que no pueda ser
>> roto por una máquina común en poco tiempo. Lo estuve intentando pero desde
>> Java me cuesta desencriptar algo encriptado con Ruby (y la librería
>> openSSH).
>>
>> Saludos!
>>
>
>

Re: Encriptación compartida entre Ruby y Java

From:
Hugo M
Date:
2011-05-29 @ 19:23
Logré solucionar mi problema haciendo un montón de pruebas y cambiando en
ruby el algoritmo por 'des-ebc'.

Salu2

El 28 de mayo de 2011 16:40, Hugo M <ham1988@gmail.com> escribió:

> Algo que me llama la atención es que supuestamente des acepta claves de 56
> bits nada más, el md5 tira de 128, y esto no me lanza ningún error (probé
> cambiando de cifrado y nunca me tiró ningún error). Este comportamiento es
> normal?
>
> El 28 de mayo de 2011 16:36, Hugo M <ham1988@gmail.com> escribió:
>
> Este es mi código Ruby:
>>
>>   def initialize
>>     @cipher = OpenSSL::Cipher::Cipher.new('des')
>>     #@cipher = OpenSSL::Cipher::Cipher.new("aes-256-cbc")
>>   end
>>
>>   def encrypt(param1, param2, app_salt, data)
>>     @cipher.encrypt
>>     @cipher.key = create_key(param1, param2, app_salt)
>>
>>     # Encrypted
>>     encrypted = @cipher.update(data) + @cipher.final
>>     encrypted = encrypted # Send along the IV
>>
>>     # Lets pretty up the encrypted string
>>     encrypted = Base64.encode64(encrypted)
>>     encrypted = URI.escape(encrypted)
>>   end
>>
>>   private
>>   def create_key(param1, param2, app_salt)
>>     Digest::MD5.hexdigest(param1 + param2 + app_salt)
>>   end
>>
>> El 28 de mayo de 2011 16:23, Hugo M <ham1988@gmail.com> escribió:
>>
>> Conocen algún tutorial donde muestren como, por ejemplo, encriptar en un
>>> server Rails y desencriptar en un programa en Java?
>>>
>>> Sería con clave simétrica, el algoritmo no me importa demasiado  mientras
>>> sea relativamente seguro (AES, TripleDES, etc.) como para que no pueda ser
>>> roto por una máquina común en poco tiempo. Lo estuve intentando pero desde
>>> Java me cuesta desencriptar algo encriptado con Ruby (y la librería
>>> openSSH).
>>>
>>> Saludos!
>>>
>>
>>
>

Re: [rubysur] Re: Encriptación compartida entre Ruby y Java

From:
nelson fernandez
Date:
2011-05-30 @ 19:00
el típico problema cuando cruzas de ambientes para des/encriptar es el
padding... distintas librerías inicializan con distintos criterios de
padding.
fijate si podes encontrar como inicializa ruby el padding y como lo
hace java y machealos, sinó empesá a rotar uno de los extremos hasta
que funciona :p

con respecto a usar el algoritmo ECB... está todo bien pero es el
menos seguro (relativamente hablando) de los posibles ... si podes
acomodar el tema del padding para que los dos usen el mismo, pasate a
CBC.

mis 2 centavos.

--
:: nelson ::
[ artesano de software ~ software craftsman ]
http://netflux.com.ar



2011/5/29 Hugo M <ham1988@gmail.com>:
> Logré solucionar mi problema haciendo un montón de pruebas y cambiando en
> ruby el algoritmo por 'des-ebc'.
>
> Salu2
>
> El 28 de mayo de 2011 16:40, Hugo M <ham1988@gmail.com> escribió:
>>
>> Algo que me llama la atención es que supuestamente des acepta claves de 56
>> bits nada más, el md5 tira de 128, y esto no me lanza ningún error (probé
>> cambiando de cifrado y nunca me tiró ningún error). Este comportamiento es
>> normal?
>>
>> El 28 de mayo de 2011 16:36, Hugo M <ham1988@gmail.com> escribió:
>>>
>>> Este es mi código Ruby:
>>>
>>>   def initialize
>>>     @cipher = OpenSSL::Cipher::Cipher.new('des')
>>>     #@cipher = OpenSSL::Cipher::Cipher.new("aes-256-cbc")
>>>   end
>>>
>>>   def encrypt(param1, param2, app_salt, data)
>>>     @cipher.encrypt
>>>     @cipher.key = create_key(param1, param2, app_salt)
>>>
>>>     # Encrypted
>>>     encrypted = @cipher.update(data) + @cipher.final
>>>     encrypted = encrypted # Send along the IV
>>>
>>>     # Lets pretty up the encrypted string
>>>     encrypted = Base64.encode64(encrypted)
>>>     encrypted = URI.escape(encrypted)
>>>   end
>>>
>>>   private
>>>   def create_key(param1, param2, app_salt)
>>>     Digest::MD5.hexdigest(param1 + param2 + app_salt)
>>>   end
>>>
>>> El 28 de mayo de 2011 16:23, Hugo M <ham1988@gmail.com> escribió:
>>>>
>>>> Conocen algún tutorial donde muestren como, por ejemplo, encriptar en un
>>>> server Rails y desencriptar en un programa en Java?
>>>>
>>>> Sería con clave simétrica, el algoritmo no me importa demasiado
>>>> mientras sea relativamente seguro (AES, TripleDES, etc.) como para que no
>>>> pueda ser roto por una máquina común en poco tiempo. Lo estuve intentando
>>>> pero desde Java me cuesta desencriptar algo encriptado con Ruby (y la
>>>> librería openSSH).
>>>>
>>>> Saludos!
>>>
>>
>
>