6 bits will encode 64 different characters. So if you can restrict your input to A-Z, a-z, 0-9, plus two other characters (space and period perhaps) then 24 characters of input can be represented in 6*24 = 144 bits. 144/8 = 18 characters. It is a Programming 101 exercise to encode 64 different characters as 0 through 63 (six bits) and to pack those six-bit integers into 18 bytes. Now you can encrypt those 18 bytes and then base64 them to 24 characters. QED.
If your input consists of more than 64 different characters, then the problem is impossible, unless there is some other pattern to the characters than can be exploited to “save bits.” Charles From: owner-openssl-us...@openssl.org [mailto:owner-openssl-us...@openssl.org] On Behalf Of Matt Caswell (fr...@baggins.org) Sent: Tuesday, August 21, 2012 5:49 AM To: openssl-users@openssl.org Subject: Re: OpenSSL DES generates '\n' in encrypted code As Andrey has said the output from encryption is binary and so can be any character (prinatable and non-printable). Therefore you are going to have to do some kind of encoding of the output to force it to be printable....this is going to increase the length no matter what. What is the allowed set of characters for the input? The only solution I can think of for you, if the output *has* to be 24 bytes, is to compress the input prior to encryption. For example, if each character from the input can be represented within 6 bits, then you could envisage a fairly simple compression routine to compress the input from 24 bytes to 18. 18 bytes of input text would encrypt to 18 bytes of output (in binary format). base64 encoding this output would result in 24 bytes of printable characters. Matt On 21 August 2012 08:45, Tarun Thakur <tarun.tha...@nechclst.in> wrote: Hi, Thanks for your reply.. But issue in base64 encoding is it will generate encoded test greater than 24 bytes. Application output should generate encrypted code exactly 24 bytes as input. Thanks, Tarun Andrey Koltsov-2 wrote: > > Hi Tarun. > > Output of every encryption function is always binary so it can contains > ANY character. You should encode this binary string to base64 or hex > format by yourself to pass it to your application. Do not forget to do > reverse encoding before decrypting. > > > Best regards, > > Andrey Koltsov > software developer > CyberplatSoft Ltd > > 21.08.2012 11 <tel:21.08.2012%2011> :16, Tarun Thakur пишет: >> >> Hi All, >> >> Issue is encrypted code contains '\n' which is an major issue for my >> software application. >> >> Given below is problem summarized. >> >> I have used OpenSSL library's DES_ede3_ofb64_encrypt() function to >> perform >> encryption byte by byte on chunk of 24 bytes. >> >> For example: >> Input 24 bytes are: >> [root@tarun]# cat input.txt >> aaaaaaaabbbbbbbbcccccccc >> >> It encrypts 24 bytes successfully. >> Generates encrypted data, for example: >> [root@tarun]# cat code.txt >> RÛÄSÒ >> É#k7uÀÎCZ!°p >> >> Here comes problem for my software application, I want all 24 encrypted >> bytes in sequence WITHOUT '\n'. >> If possible in printable characters. >> >> Can you please help or guidance how to avoid '\n' in encrypted code? >> Is there any range of characters I can specify to DES algorithm which can >> be >> used for encrypted code generation? >> >> Please help I am stuck. >> >> Thanks. >> Tarun >> > ______________________________________________________________________ > OpenSSL Project http://www.openssl.org > User Support Mailing List openssl-users@openssl.org > Automated List Manager majord...@openssl.org > > -- View this message in context: http://old.nabble.com/OpenSSL-DES-generates-%27%5Cn%27-in-encrypted-code-tp34327804p34327911.html Sent from the OpenSSL - User mailing list archive at Nabble.com. ______________________________________________________________________ OpenSSL Project http://www.openssl.org User Support Mailing List openssl-users@openssl.org Automated List Manager majord...@openssl.org