¿Cómo realizar cálculos Triple DES en Ruby en hexadecimal?
encryption openssl (1)
La clave está en hexadecimal: si observa la página Java que pegó, puede verla fácilmente decodificando los valores binarios de la clave en la salida detallada.
>> des_cbc=OpenSSL::Cipher::Cipher.new("des-ede-cbc")
=> #<OpenSSL::Cipher::Cipher:0x10116ce28>
>> des_cbc.encrypt
=> #<OpenSSL::Cipher::Cipher:0x10116ce28>
>> des_cbc.key="/x23"*8 << "/x45"*8
=> "########EEEEEEEE"
>> des_cbc.update("/x00"*8).unpack(''H*'')
=> ["3a42d7a1d1c60c40"]
Estoy tratando de hacer un triple cifrado DES en Ruby. Estoy tratando de replicar los resultados de esta página: http://da.nmilne.com/des.html
Estoy tratando de replicar esos resultados en Ruby. Sospecho que el problema es que se supone que la clave es una cadena, pero necesito pasar una clave hexadecimal. O eso o la cadena cifrada está en el formato incorrecto. O tal vez ambos. :-)
require ''openssl''
des = OpenSSL::Cipher::Cipher.new("des-ede-cbc")
des.encrypt
des.key="23232323232323234545454545454545"
des.update("0000000000000000")
res=des.final
res.unpack(''H*'')
=> ["5045c5d37ca4d13b"]
Pero debería ser:
=> ["3a42d7a1d1c60c40"]
¿Alguna sugerencia sobre dónde me estoy equivocando?
- Diferentes algoritmos 3DES están documentados aquí: http://www.openssl.org/docs/apps/enc.html
- Editado para mayor claridad