Como posso converter um Blowfish codificado seqüência de binário para ASCII em Ruby?

StackOverflow https://stackoverflow.com/questions/808536

  •  03-07-2019
  •  | 
  •  

Pergunta

Gostaria de codificar algum texto sem formatação usando Ruby e a Crypt biblioteca . Gostaria de, em seguida, transmitir este texto criptografado (junto com alguns outros dados) como uma string ASCII hexadecimal dentro de um arquivo XML.

Eu tenho o seguinte trecho de código:

require 'rubygems'
require 'crypt/blowfish'

plain = "This is the plain text"
puts plain

blowfish = Crypt::Blowfish.new("A key up to 56 bytes long")
enc = blowfish.encrypt_block(plain)
puts enc

Que resultados:

This is the plain text
????;

Eu acredito que eu preciso enc.unpack() chamada, mas eu não tenho certeza do que parâmetros são necessários para a chamada de método de descompactação.

Foi útil?

Solução

Quando você diz "hexadecimal ASCII" você quer dizer que apenas precisa de ser ASCII legível ou faz isso precisa ser estritamente hexadecimal?

Aqui está duas abordagens para codificação de dados binários:

require 'rubygems'
require 'crypt/blowfish'

plain = "This is the plain text"
puts plain

blowfish = Crypt::Blowfish.new("A key up to 56 bytes long")
enc = blowfish.encrypt_string(plain)

hexed = ''
enc.each_byte { |c| hexed << '%02x' % c }

puts hexed
# => 9162f6c33729edd44f5d034fb933ec38e774460ccbcf4d451abf4a8ead32b32a

require 'base64'

mimed = Base64.encode64(enc)

puts mimed
# => kWL2wzcp7dRPXQNPuTPsOOd0RgzLz01FGr9Kjq0ysyo=

Outras dicas

Se você usar decrypt_string e sua contraparte encrypt_string ele gera-lo muito facilmente. :)


require 'rubygems'
require 'crypt/blowfish'

plain = "This is the plain text"
puts plain

blowfish = Crypt::Blowfish.new("A key up to 56 bytes long")
enc = blowfish.encrypt_string(plain)
p blowfish.decrypt_string(enc)

Também encontrado este blogpost que fala sobre as preocupações de velocidade usando a biblioteca Crypt, adicionados apenas para referência. :)
http://basic70tech.wordpress.com/2007/03/09/blowfish-decryption-in- rubi /

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top