|
Message-ID: <20111218125704.GA31878@openwall.com> Date: Sun, 18 Dec 2011 16:57:04 +0400 From: Solar Designer <solar@...nwall.com> To: john-dev@...ts.openwall.com Subject: Re: Bit slice implementation of DES based hashes On Sun, Dec 18, 2011 at 04:38:10PM +0530, piyush mittal wrote: > At last a new twist came. The character equivalent of Ox0123456789ABCDEF is > a sequence of special characters i.e NON ASCII.Therefore it is mandatory to > use Unicode in oracle and then I hope we also need to change whole code of > Bit slice DES to Unicode because there every calculation is going on with > respect to ASCII char only . You're confused. DES keys are 56-bit. You have a 56-bit binary value for the key. You don't need anything else. ASCII and Unicode are irrelevant here. Actually, the value that you have is 64-bit, but the least significant bit of each octet is ignored. To confirm this, I've just changed the line: deskey[0] = 0x01; to: deskey[0] = 0x00; in a copy of oracle_fmt_plug.c. The self-test passes. Now, to make use of the existing bitslice DES interface, you do in fact need to represent this binary key in ASCII. You need to shift each octet right by one bit (thereby dropping the unused parity bit), and if the resulting value would be zero (like it is in the example above), you need to set the most significant bit to prevent the would-be-NUL octet from terminating the C string. While OpenSSL's DES_set_key() ignores the least significant bit in each octet, John's DES_bs_set_key() does this for the most significant bit of each octet (like DES-based crypt(3) does). I think you'll get: "\x80\x11\x22\x33\x44\x55\x66\x77" ...oh, I just realized that in 1.7.9+ you need to actually use DES_bs_set_key_LM() because DES_bs_crypt_LM(), which you'll base your revision on, now includes key setup finalization in it. So you'll need to turn the above string into a 7-character string with 8-bit characters - simply by placing the significant bits one after another with no gaps. Oh, and you'll need to drop the LM-specific DES_LM_KP[] permutation. ...As a maybe-better alternative, you may create a mix of DES_bs_crypt_LM() and DES_bs_crypt(), where you'd take the key setup finalization step from the latter. In that case, you may use DES_bs_set_key() with the specific key string I included above, and you don't need to worry about DES_LM_KP[]. Alexander
Powered by blists - more mailing lists
Confused about mailing lists and their use? Read about mailing lists on Wikipedia and check out these guidelines on proper formatting of your messages.