Chiffrement Simple en Ruby externes sans gemmes
J'ai besoin d'un chiffrement simple pour certaines chaînes de texte. Je veux créer des codes promo et leur faire prendre l'air cool par la suite créé le code devrait être très différente. (Et d'ailleurs à la recherche de cool, il ne devrait pas être facile de deviner un code.) Mais je veux être en mesure de les déchiffrer de nouveau. Si l'algorithme doit être réversible.
Je alread essayé quelques trucs avec le déplacement des bits de sorte qu'ils regardent un peu aléatoire déjà. Mais deux codes (juste un peu différent) de cours sont très similaires.
Des suggestions? Je voudrais le faire sans aide extérieure gemmes.
Philip
OriginalL'auteur Philip | 2010-11-08
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser OpenSSL::Cypher
Mais la forme intermédiaire ne se prêtent pas bien à l'impression
Donné votre pensé que ce serait bien si la forme intermédiaire était de la même longueur, vous pouvez simplement utiliser une simple carte d'un char à l'autre.
S'IL VOUS PLAÎT COMPRENDRE QUE CE N'EST PAS SÛR
Vous pouvez facilement la force brute de la clé, mais il semble être en harmonie avec vos besoins.
Est-il de toute façon à faire votre premier exemple d'impression de "régulier" des personnages plutôt que du charabia? J'imagine que c'aurez besoin d'un certain type de codage et de décodage. Désolé, je ne suis pas un Rubis gars, mais il a été demandé de modifier certains vieux code qui est toujours en cours d'exécution sur 1.8.7.
Je n'ai aucune idée de ce que vous entendez par "régulièrement" des personnages et des "giberish". Chaque personnage ici est l'ASCII, êtes-vous d'obtenir une sorte de unicode ou que vous ne voulez pas que le particulier le jeu de caractères?
Notez que vous n'avez pas à stocker
iv
- il suffit de l'envoyer avec le message chiffré. Vous pouvez également chiffrer pour plus de sécurité, mais l'utilisation d'une clé séparée!Je suis en utilisant cette méthode de chiffrement pour l'authentification HTTP cookies, voici un exemple: github.com/yegor256/sixnines/blob/0.2/objects/cookie.rb
OriginalL'auteur Joshua Cheek
Si vous n'avez pas besoin réel de cryptage, vous pouvez utiliser un simple chiffre. (Ceci peut être utilisé lorsque vous n'avez pas besoin de sécurité, ou pour chiffrer court aléatoire/one-off des chaînes de caractères.)
OriginalL'auteur Ari
De base de codage/décodage but je suppose que ruby intégré Base64 bibliothèque peuvent être à portée de main:
Il a aussi la urlsafe version de méthodes dans le cas où les chaînes codées doivent être utilisés dans les url.
Référence: http://ruby-doc.org/stdlib-2.3.0/libdoc/base64/rdoc/Base64.html
Hash
, vous aurez besoin d'utiliserJSON.generate
avantBase64.encode64
.Je n'ai jamais vraiment understodo de l'encodage base64. Il ressemble à ce qui se passe est que nous allons à partir d'une chaîne à une autre chaîne, mais j'ai pensé que le codage base64 est allé à partir d'une séquence d'octets en une chaîne de texte.
Une chaîne est une séquence d'octets. Un codage est utilisé pour la chaîne, par exemple UTF-8 et il détermine les octets qui sera utilisé pour représenter les points de code de la chaîne.
Veuillez noter que Base64 est un codage des octets ASCII. Il n'est pas un moyen de crypter les choses. Il est clair donné un Base64 decoder. Pas de clé de chiffrement impliqués.
OriginalL'auteur Jignesh Gohel
Je peux vous recommander uuencode et uudecode utils
vous pouvez les utiliser wuth standart ruby fonction du pack:
(échantillon de Hal Fulton Ruby Façon)
OriginalL'auteur rsludge
Méthode facultative pour le chiffrement et le déchiffrement
OriginalL'auteur Prashanth Sams
Voulez-vous vraiment faire confiance à l'utilisateur pour vous redonner de la valeur de droite? Si vous vous fiez à ce que le client vous donne en arrière et l'utilisateur sur les chiffres de votre système de cryptage, vous serez à l'aide des données qu'ils fournissent. Qui sonne comme une très mauvaise idée.
Il n'est pas clair pour moi pourquoi vous ne voulez pas leur donner une clé dans une base de données de cartes de nombres aléatoires, avec peut-être quelques propriétés de correction d'erreurs, le coupon de réductions. De cette façon, vous avez le contrôle du résultat final. Ils vous fournir une clé, vous recherchez l'associé coupon et d'appliquer le coupon. De cette façon, vous êtes seulement en utilisant vos propres données et si vous voulez supprimer un coupon tout est sur le côté serveur.
Si vous conservez tous les principaux codes vous pouvez également vérifier que les nouveaux codes sont différents de ceux précédemment publiés.
La force brute problème n'est pas différent que si quelque chose avait été chiffré. Vous pouvez deviner un code crypté. Si votre coupon état de l'espace est assez grand, il ne va pas être la peine et le serveur devrait taux limite/bloquer les utilisateurs qui ont trop de mauvaises suppositions. Comme pour le contrôle, n'est-ce pas juste une requête que votre code proposé n'est-il pas déjà?
OriginalL'auteur Paul Rubel
Je suppose que le plus simple est a * x + b (mod 2^n)
Noter que vous avez besoin pour calculer l'inverse d'une sur 2^n, vous pouvez avec Wolfram Alpha à l'aide de PGCD étendu.
OriginalL'auteur Philip
Vous pouvez vérifier tous les différents moyens de chiffrement/déchiffrement à l'aide de ruby dans ce gist: https://gist.github.com/iufuenza/183a45c601a5c157a5372c5f1cfb9e3e
Si vous ne souhaitez pas utiliser un bijou, je recommanderais totalement Openssl comme le plus sécurisé qui est aussi très facile à mettre en œuvre comme il a une très bonne prise en charge de Ruby.
OriginalL'auteur user2373148