Page 1 of 4 123 ... LastLast
Results 1 to 10 of 36

Thread: Personal Phone Directory

  1. #1
    Join Date
    Feb 2005
    Posts
    139
    Rep Power
    0

    Talking Personal Phone Directory

    Hello every1. This is my Info Tech SBA programming project - A Phone Directory. Its about 400k in rar archieve and ive uploaded it on rapidshare. Take a look and tell me wat u think, along with any advice and improvements that can be made.
    Last edited by BloodLust_89; Feb 20, 2006 at 01:45 AM.

  2. #2
    Join Date
    Feb 2005
    Posts
    139
    Rep Power
    0

    Default

    Screw that link. It w0ont work cuz i forgot the ActiveX Control. Heres the correct 1:
    http://rapidshare.de/files/13683592/..._1.11.rar.html
    Last edited by BloodLust_89; Feb 20, 2006 at 01:44 AM.

  3. #3
    Join Date
    Sep 2004
    Posts
    1,905
    Rep Power
    21

    Default

    Yo. you blazing

    The program is decent

    menus are well designed ... and the chioces flow smoothty. eg Logout

    you got an encrypting algorithm ... and sorting and filtering tables,

    You should go to the next level so that you get more of a challenge then again its for school.

    No improvements is suggested. I don't think there is any stuff that you could add. IMO. Take adding SQL for example, SQL is not on the syllabus, right? Adding SQL is also not recommended for plenty reason. Another reasons is that there is not sufficient time to complete such a drastic change. If SQL was used, you could find a person by last name, address, area code when there is like a hundred phone numbers is the store.

    This might be the 'next level' talk that I am using so dont worry about it. Your program is good and you should get a good grade.

    This program may be good or even the best in your class, but your next program will always be better than this one.

  4. #4
    Join Date
    Jul 2004
    Posts
    264
    Rep Power
    0

    Default

    ahh ... what is the login info for this app.... i am not able to login

  5. #5
    Join Date
    Jul 2004
    Posts
    264
    Rep Power
    0

    Default

    ohhh.... that little options thing at the bottom... that needs to be more visible and but otherwise the app looks decent for a SBA pro... just wanted to say tho .. the encryption is VERY weak, does 15 have anything to do with it.... hopefully you wont be graded on that. And another thing... the progress bar... to me it kinda annoying to be seeing it everytime an action is done... but as i said good stuff... u are goin good so far
    Last edited by aonekilla; Feb 24, 2006 at 11:55 AM.

  6. #6
    Join Date
    Feb 2005
    Posts
    139
    Rep Power
    0

    Default


    aonekilla, how did u know i modified text by adding 15 to the ascii value of each char? Ur good, but the average person wont think that, theyll see rubbiish. N e way what would u do?
    Do not live your life in fear, 'cuz if you do, you will never live your life.

  7. #7
    Join Date
    Sep 2004
    Posts
    1,905
    Rep Power
    21

    Default

    A high percentage of techies can hack your program.
    It would take the 15 seconds top for them to do it.

    I suggest that you use an encrypting algoritms in the Platform SDK library CryptEncrypt & CryptDecrypt. If I had my VB stuff installed I could check for the VB version for Advapi32.lib, Advapi32.dll, Advapi32.class



    Though I would prefer to use the encryption in the .Net library, I did two custom encrytions. Do not relate my stuff to well-known standards for encryption. For that there are encrypting algorithms (eg SHA1), which can use a random key to encrypt and decrypt data. There is also hashing which provides a code which can be used to test data integrity. There is also signing which ensures that the data is coming from the correct source when data is being communicated.

    Basically you want to secure the data from being read by others, and know if it has been compromised or tampered with in which case it looses its data integrity.



    Custom encryption 1 - Ad hoc stlye for high level of custom encoding

    This method encrypts a block of 12 bytes

    1) input "crosswire"
    input = "crosswire"

    2) pad null chars at the end so that the total amount of charaters is 12, or do the padding in step 3)
    temp = "crosswire\0\0\0"

    3) decode the string using 8-bit ASCII to get the binary representation, eg 'c'=01100011 'r'=01110010
    bin = 01100011 01110010 ... 00000000

    4) subtract a 12 byte binary number from it. The number is smaller and fairly random looking throughout
    result =
    01100011 01110010 ... 00000000 -
    00001001 01010101 ... 10100011

    5) eor it with another 12 byte binary number
    result =
    01100011 01110010 ... 00000000 eor
    10101010 10111010 ... 10100101

    6) cyclic-shift the bits right (-->) by 5 places. The pattern 0001111111111 would become 1111100011111.
    result =
    01011001 01101010 ... 01110110 cyclic-shift-right 5

    7) encode using base64. Every 6 bits represents a character, eg 000000 is A, 000001 is B ... 011010 is a, 011011 is b and so on. I do not have to use the standard base64 encoding. This pattern will suffice. The result will have 16 text alpha numeric characters.
    result = AEzp GHiK wLsd WqsT

    8) do step 3) again to get a binary represention

    9) count the number of alternate sets of 0's and 1's, eg 00111000011111 becomes 2345 and 111100001111 becomes 444. Append a final digit to it. The final digit is either a 1 or 0 and it tells whether the original binary number started with a set of 0's or a set of 1's

    10) threat the result from 9) as a decimal number and convert it to a binary number. Pad bit 0's in front of the binary form until the total number of bits is a multiple of 12. Then run step 7) again to get a text representation.

    11) done. The result is still hackable by hackers with good software and a good machine.





    Custom encryption 2 - Ad hoc stlye for custom mapping

    I use mapping in this context to describe the way in which an input character will output a specific other character, and no two output characters can bath have the same input character.

    Take this algorithm for example. I copied it form another custom code and modified it.

    Code:
    psuedo code
    changeCharater(charIn)
    {
        charOut = ' ';
        
        //If the character is in the first half of the capitals alphabet
        // then map it to the second half of the commons alphabet.
        if charIn is >= 'A' and charIn <= 'M' then charIn += (26 + 13)
    
        //If the character is in the second half of the capitals alphabet
        // then map it to the first half of the capital alphabet.
        else if charIn is >= 'N' and charIn <= 'Z' then charIn += (-13)
    
        //If the character is in the first half of the commons alphabet
        // then map it to the second half of the capitals alphabet.
        if charIn is >= 'a' and charIn <= 'm' then charIn += (-13)
    
        //If the character is in the second half of the commons alphabet
        // then map it to the first half of the commons alphabet.
        else if charIn is >= 'n' and charIn <= 'z' then charIn += (-13)
    }
    In an improve scenario, each character would map to another character. Imagine that the alphanumeric alphabet was jumbled up on the right side of the mapping.
    A-->e
    B-->O
    C-->q
    D-->t
    E-->8
    .
    .
    .
    z-->I
    1-->p
    2-->H
    .
    .
    .
    9-->K

    A 64x6 bit array could hold the mapping information since there are 64 characters (A-z,0-9,+,-) which take up 6 bits each.

    I will try 2 character mapping.
    AA-->e1
    AB-->Ld
    AC-->70
    .
    .
    .
    A 64x64x12 bit array could hould the mapping for 2 charcter mapping

    For 3 character mapping a 64x64x64x18 bit array is used. That works out to 589824 bytes so a smaller mapping may work out to be more desirable

    This is a mapping for 3 bits of information
    000-->101
    001-->011
    010-->111
    011-->100
    .
    .
    .

    A 8x3 bit array could save this mapping information. This might be good.
    There are 8! = 40320 different mapping for these 3 bits. I want to change my mapping and use one that looks fairly random and yet completely different than the previous mapping. Based on the value of the next 3 bits to encrypt, I will rotate the mapping array by that value. Eg if mapping array is [101,001,011,111,100,...] and 001 is the next number to be encrypted then the array is shifted 1(x3) bit places to the right. So for a stream like 010010 to be encrypted, the first 010 would be mapped then the mapping would shift by 2(x3) bit places. This is still not random enough because the pattern would eventually cycle through the 8 different mappings. I could employ some of the 40320 different mappings, or at least 1000 good ones, by using another algorithm - a custom (and layman) random number generator.

    Say I had these two arrays and indexers.
    array1=[1,3,4,7,5,2,6,8] Index1=0
    array2=[5,4,1,8,6,7,3,2] Index2=0
    Index2 points to 5 in array2 so Index1 is incremented by 5. Index1 now points to 2 so Index2 is incremented by 2. Index2 now points to 1 so 1 is outputed.
    Index2 points to 1 in array2 so Index1 is incremented by 1. Index1 now points to 6 so Index2 is incremented by 6 (and clipped by subtracting 8 when necessary). Index2 now points to 5 so 5 is outputed.
    The algorithm is not tested for degree of randomness but it will produce a sequence of integers. That sequence is used to build a new mapping array by applying the sequence to the initial array [000,001,010,011,...]. The initial array is treated as a linked list so that items can be pulled from it.
    Given sequence is 1,5,7,7,2,8,7,4 then the 1 matches the position of the first 000 in the link list and that item is pulled, the 5 now mathes 011, and so on. The 7 is clipped by the current size of the linked list before it is used on the linked list.

    *Ideas to improve the randoness are: reduce from 3 bits to 2 bits, randomly generate the sequence with unique integers in it, or generate the sequence twice then add corresponding integers from both sequence.

    The second adhoc is highly untested so the first ad hoc is better. Stritly speaking, both adhoc encryptions are weak. Use the standard encryptions. Other benefits are strong support of keys and data integrity.
    Let's act on what we agree on now, and argue later on what we don't.
    Black men leave Barbeque alone if Barbeque don't trouble you

  8. #8
    Join Date
    Sep 2004
    Posts
    1,905
    Rep Power
    21

    Default

    *Idea to increase the randomness again:
    Reduce to a 1 bit mapping that has two possiblities
    0-->0
    1-->1
    and
    0-->1
    1-->0
    After mapping 1 bit from the source data, the mapping is changed by a very strong random function that determines 50%-50% which mapping is used for the next bit.
    To get a stronger random function, increase the array size and generate a greater sequence of integers. Then poll the integers together and see if there is an even or odd number of bits. hopefully that is more truly random and harder to dicipher a pattern.
    Let's act on what we agree on now, and argue later on what we don't.
    Black men leave Barbeque alone if Barbeque don't trouble you

  9. #9
    Join Date
    Sep 2004
    Posts
    1,905
    Rep Power
    21

    Default

    Oh crap! The last idea is very hackable.

    If a person inputs different data into my mapping repeatedly, it would be easy to uncover the mapping that was used each time.

    Maybe I should eor that the newly generated random 50-50 bit with the bit that was previously in the source. Also modify it so that the last 8 bits of the source contribute to the genration of the next 8 random bits. Decryption may not even be possible to rahtid. Ah well. Me give up.
    Let's act on what we agree on now, and argue later on what we don't.
    Black men leave Barbeque alone if Barbeque don't trouble you

  10. #10
    Join Date
    Feb 2005
    Posts
    139
    Rep Power
    0

    Thumbs up


    OK CrossWire, VERY interesting idea. However maybe thats beyond thescope f the project. Probably if im gonna go retail with this(what do u think?) i would implement what u said. Howver, at this point it irrelevant.
    btw, im saving this web page
    Do not live your life in fear, 'cuz if you do, you will never live your life.

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •