2010-02-03 26 views
13

Necesito cifrar una cadena (de un área de texto) que también se descifrará más adelante cuando se muestre.ruby ​​- cómo cifrar el texto

No me preocupa que sea muy seguro, pero simplemente no quiero almacenar los datos en formato de texto plano.

¿Alguien tiene alguna sugerencia sobre cómo hacer esto fácilmente en Rails?

Respuesta

-26

Si no está preocupado por la seguridad sólo puede base64 codificar la cadena:

encoded = Base64::encode(string) 
decoded = Base64::decode(encoded) 

Por cierto es también conveniente para codificar datos binarios.

Esto no es realmente el cifrado de ya que cualquier desarrollador puede incluso adivinar que sus datos codificados en Base64.

+21

-1 La codificación no es cifrado. – Shyam

+1

Aunque menciones seguridad, un escaneo casual realizado por un desarrollador apresurado podría hacer que se olviden de eso. Dado que la pregunta era sobre el cifrado, esta respuesta es, de hecho, incorrecta –

+7

. Siento que a @neutrino se le está dando un momento difícil aquí. Los comentaristas están en lo cierto, pero sí precedió su respuesta con "si no le preocupa la seguridad". Creo que todo el mundo está reaccionando demasiado al hecho de que fue elegido como "correcto", y los desarrolladores que entienden la diferencia entre la codificación y el cifrado están preocupados de que alguien que tropiece con este hilo use la respuesta "correcta". Realmente me gustaría poder editar la respuesta, y eso resolvería los problemas de todos. – hrdwdmrbl

14

¿Hay una implementación de ROT13 en Ruby/Rails (debe haber ...) que es totalmente insegura excepto para los lectores humanos (y los sabios idiotas) por lo que parece ajustarse a su caso de uso.

EDITAR - Este es un buen comienzo para el canje de caracteres:

$_.tr! "A-Za-z", "N-ZA-Mn-za-m"; 

Se pide la entrada del usuario y luego intercambia los personajes.

EDIT Si no está familiarizado, ROT13 le asigna a cada letra su número natural. A = 1, B = 2, etc. Luego agrega 13 a cada número, haciéndolo girar a la mitad del alfabeto. La mitad del camino es genial, porque a diferencia de, digamos, ROT12, puede ejecutar ROT13 nuevamente para decodificar. Una función para ambos. O puede ejecutar ROT12 13 veces, supongo (12 * 13 = 156. 156/26 = 6.) ROT 13 es mejor para esto.

+17

Simplemente no creo que el doble ROT13 es más seguro como de doble RSA podría ser. – tadman

20

Hay un RubyGem llamado Crypt que proporciona una implementación pura de Ruby de varios algoritmos de encriptación.

+0

El ejemplo en su sitio web me dio un error, en su lugar fue para encriptador. –

+1

Crypt no es compatible con 1.9.1 o más grande, al menos en este momento – pduersteler