Je suis en train de convertir du code Python en Ruby. Voici un extrait du code Python:Dans ruby, comment faire un cryptage DES avec padding PKCS5
# -*- coding: UTF-8 -*-
import pyDes
import base64
des3Key = '1234567887654321'
iv = des3Key[0:8]
data = r'abc'
k = pyDes.triple_des(des3Key,pyDes.CBC,iv,pad=None,padmode=pyDes.PAD_PKCS5)
d = k.encrypt(data)
print base64.b64encode(d)
#q8qN6El3X8A=
Code Mon Ruby:
require 'digest'
require 'openssl'
require 'base64'
data = 'abc'
key = '1234567887654321'
iv = key[0..7]
# cipher = OpenSSL::Cipher::Cipher.new('DES-EDE3')
cipher = OpenSSL::Cipher::Cipher.new('DES-EDE3-CBC') # or any other algorithm?
cipher.encrypt
cipher.pkcs5_keyivgen(key, iv)
output = cipher.update(data)
output << cipher.final
p Base64.encode64(output).gsub(/\n/, "")
# y7TPhjBQO78=
Le résultat rubis pas algorithme .Qui python égal dois-je choisir?
Un triple DES doit avoir 24 octets et non 16 caractères. En outre, les clés cryptographiques doivent être indiscernables du bruit aléatoire, ce qui signifie qu'elles ne peuvent pas être composées uniquement de chiffres ou même d'alphanumériques. Ils doivent être choisis au hasard peut contenir n'importe quelle valeur d'octet possible. –
** N'utilisez pas Triple DES de nos jours. ** Il ne fournit au mieux que 112 bits de sécurité même si vous utilisez la plus grande taille de clé de 192 bits. Si une taille de clé plus courte est utilisée, elle ne fournit que 56 ou 57 bits de sécurité. AES serait plus rapide (les processeurs ont un ensemble d'instructions AES-NI spécial) et encore plus sûr avec la taille de clé la plus faible de 128 bits. Il y a aussi une limite pratique sur la taille maximale du texte chiffré avec 3DES. Voir [Comparaison de sécurité de 3DES et AES] (https://security.stackexchange.com/q/26179/45523). –
La IV doit être imprévisible (lire: aléatoire). N'utilisez pas de IV statique, car cela rend le chiffrement déterministe et donc non sémantiquement sécurisé. Un attaquant qui observe des textes chiffrés peut déterminer quand le même préfixe de message a été envoyé auparavant. L'IV n'est pas un secret, vous pouvez donc l'envoyer avec le texte chiffré. Habituellement, il est simplement préfixé au texte chiffré et découpé avant le déchiffrement. –