2017-08-31 3 views
1

J'essaie de décrypter Hex chaîne codée via Blowfish. Mais le résultat est différent du bon.Blowfish décryptage chaîne codée en hexadécimal

String s="a1d0534e4baf9e670bde8670caee8b87" 
String decKey = "R=U!LH$O2B#"; 
Cipher m_decrypt = Cipher.getInstance("Blowfish/ECB/PKCS5Padding"); 
m_decrypt.init(Cipher.DECRYPT_MODE, new SecretKeySpec(decKey.getBytes(),"Blowfish")); 
byte[] decrypted = m_decrypt.doFinal(Hex.decodeHex(s.toCharArray())); 

résultat correct à partir du site: c6 b7 8d 52 31 35 30 34 31 38 38 36 39 37 02 02

Mon résultat: -115 -73 82 -58 49 53 48 52 49 56 56 54 57 55

Je vérifie le tableau d'octets correct avec moi sur ce site http://blowfish.online-domain-tools.com/

+0

Merci, je vais corriger le nom de poste. – Mike

+0

Blowfish est passé son "best used by" date, même son auteur ne l'utilise plus. – zaph

+1

La valeur décimale "Mon résultat" et "Résultat correct du site" sont-elles hexadécimales? Ce sont des encodages différents, les différents encodages des mêmes données seront différents. Le '02 02' final du résultat correct est deux octets de remplissage qui est généralement supprimé de façon transparente. – zaph

Répondre

2

le résultat correect: c6 b7 8d 52 31 35 30 34 31 38 38 36 39 37 02 02
est dans le codage hexadécimal et contient deux octets de remplissage. Mon résultat: -58 -73 -115 82 49 53 48 52 49 56 56 54 57 55
en codage décimal signé sans les octets de remplissage.

Ils ont la même valeur dans différents encodages où "Mon résultat" a été supprimé, comme d'habitude.