10. august 2004 - 03:22
Der er
14 kommentarer og 1 løsning
Konvertering af salt værdi
Jeg har følgende stykke C kode der laver en blowfish encrypted tekst ud fra de 2 salt værdier. Jeg skal ha omregnet de salt, så de passer ind i nedestående java assignment. C - SALT værdier #define SALT1 0xdeadd061 #define SALT2 0x23f6b095 Java - salt værdier byte[] salt = { (byte)0xA9, (byte)0x9B, (byte)0xC8, (byte)0x32, (byte)0x56, (byte)0x34, (byte)0xE3, (byte)0x03 }; C - Encrypt routine static void blowfish_encrypt_pass(char *text, char *new) { u_32bit_t left, right; int n; char *p; blowfish_init((unsigned char *) text, strlen(text)); left = SALT1; right = SALT2; blowfish_encipher(&left, &right); p = new; *p++ = '+'; /* + means encrypted pass */ n = 32; while (n > 0) { *p++ = base64[right & 0x3f]; right = (right >> 6); n -= 6; } n = 32; while (n > 0) { *p++ = base64[left & 0x3f]; left = (left >> 6); n -= 6; } *p = 0; } Nogen der ved hvordan ?
Annonceindlæg fra DE-CIX
10. august 2004 - 09:03
#1
Det nemmeste ville være at dekryptere din krypterede tekst med den gamle salt og derefter kryptere plaintext med den nye salt.
10. august 2004 - 09:19
#2
Er det ikke bare: #define SALT2 0x23f6b095 byte[] salt = { (byte)0x61, (byte)0xd0, (byte)0xad, (byte)0xde, (byte)0x95, (byte)0xb0, (byte)0xf6, (byte)0x23 }; ?
10. august 2004 - 15:32
#3
BLOW Encryption algorithm Original String : test Encrypted String : ZponSJBwMfw= Decrypted String : test men hvis jeg encrypter test med c programmet bliver det OiudU0ziu4f1 brilleaben Hvordan vil du så decrypt det med den gamle salt? Jeg får teksten i krypteret form, og skal decrypte den i java.
10. august 2004 - 16:47
#4
Du har vel en krypteringsrutine i Java, ikke?
10. august 2004 - 18:27
#5
Kiggede efter nogle i går, og fandt en wrapper til javas egne routiner, men salt skal jo være ens for at den kan decrypt med blowfish ? Så skal ha sat byte[] salt til den samme salt som de 2 variabler i c programmet.
10. august 2004 - 19:38
#6
Jeg får faktisk: L8+tc5K4r0Y :-) Må vi se din Java kode ?
10. august 2004 - 21:27
#7
10. august 2004 - 21:49
#8
Hvad compiler I med ? Jeg får fejl på: KeySpec keySpec = new PBEKeySpec(passPhrase.toCharArray(), salt, iterationCount); med alle de Java versioner som jeg har prøvet med !
10. august 2004 - 22:17
#9
java version "1.4.2_01" Java(TM) 2 Runtime Environment, Standard Edition (build 1.4.2_01-b06) Java HotSpot(TM) Client VM (build 1.4.2_01-b06, mixed mode) C:\blow>javac StringEncrypter.java
10. august 2004 - 22:44
#10
Hm. Jeg fik det til at compile command line. Et eller andet er fucked i min Eclipse.
10. august 2004 - 22:47
#11
Men jeg forstår slet ikke koden. Så vidt jeg kan se bruger I ikke Blowfish hvor test bliver til ZponSJBwMfw= ...
10. august 2004 - 23:03
#12
Det er lidt svært at se hvordan koden skal ændres når vi ikke kan se koden. Men umiddelbart burde du kunne operere med to nøgler: key=blowfish_makekey(gl_salt, password); plain_text=blowfish_decrypt(encrypted_text, key); new_key=blowfish_makekey(ny_salt, password); encrypted_text=blowfish_encrypt(plain_text, key); ... er den måde man normalt ville gribe det an. Alt afhængig af din blowfish implementation er dette muligt. Er salt'en hardcodet i implementationen skal du finde det i kildeteksten og ændre i den - arne_v gav et eksempel overfor.
10. august 2004 - 23:51
#13
jeg har ikke brug at encode det i java igen. Men jeg kan ikke ændre C koden der encoder teksten, så jeg bliver nød til at få java til at bruge den salt fra C programmet. Bliver måske mere et java problem end C.
11. august 2004 - 10:29
#14
Umiddelbart burde salt så være: byte[] salt = { (byte)0xde, (byte)0xad, (byte)0xd0, (byte)0x61, (byte)0x23, (byte)0xf6, (byte)0xb0, (byte)0x95 }; Men pas på det med endianess osv.
02. september 2004 - 01:16
#15
Det kom ikke til at virke... Klarer det nok med et JNI kald til c programmet der kan decrypte det.
Kurser inden for grundlæggende programmering