Wedding Ring Cipher contest winners

Discuss

15 Responses to “Wedding Ring Cipher contest winners”

  1. tofoomeister says:

    #5:

    Looks like the rings are already hard at work!

  2. rebdav says:

    the real question is when kits with blanks and letter punches will be available. Your decoder rings can be the first of a trend, but I dont want them to be so unique that I cant have one.

  3. Robotgod says:

    Drat. I thought my plan for secret decoder rings for my partner and myself was totally unique (and having a brother who is a jeweller helps the plan)! However, I suspect this cypher is way more complicated than ours is set out to be.

  4. Bugs says:

    @7
    Easy, just marry Cory.

    I’m surprised that each of the three rings seems to be in alphabetical order. Wasn’t that element of predictability one of the big reasons that the Enigma codes were eventually cracked? Disclaimer: I know exactly squat about cryptography.

  5. Chris S says:

    Ok – very strange.

    Everywhere in one organization, the download is toast.

    Everywhere in another organization, it works just fine.

    I suspect a proxy somewhere is gumming up the works.

  6. Chris S says:

    @RobotGod;

    I think you’ll find that if you practice a while, it’s not as tough as you think. Part of my reasoning for that is that although I think Fidget – which I created – is quite straight-forward, I stil think the polyalphabetic one is incredibly complex.

    This suggests that any protocol you’re not familiar with is complex, but one you’ve practiced with will seem much easier.

  7. kaek says:

    To hell with public key cryptography, yay for public ring cryprography.

  8. userw014 says:

    “fidget” isn’t a user-friendly proof-of-concept example!

    It blew up on my PowerPC Mac and FreeBSD boxes. Apply the following changes to avoid the bus errors/segmentation faults and get it to compile with “gcc -W”:

    The added “return” statements are to make “gcc” stop complaining.

    The change from “char *msg” to “static char msg[]” is to move the texts involved from read-only memory to read-write memory.

    This code doesn’t behave well with mixed case strings to encode.

    $ diff -c -b -w ~/Downloads/FidgetProtocol/FIDGET.C ~/src/fidget.c
    *** /Users/rsc/Downloads/FidgetProtocol/FIDGET.C 2008-09-30 17:50:44.000000000 -0400
    — /Users/rsc/src/fidget.c 2008-10-15 16:03:14.000000000 -0400
    ***************
    *** 236,242 ****

    char EncodeKeyAndChar(char nextkey, char nextchar) {

    ! char *msg = “[ENC:-->";

    msg[5] = nextkey;
    msg[6] = nextchar;
    — 236,242 —-

    char EncodeKeyAndChar(char nextkey, char nextchar) {

    ! static char msg[] = { ‘[', 'E', 'N', 'C', ':', '-', '-', '>', '\0'};

    msg[5] = nextkey;
    msg[6] = nextchar;
    ***************
    *** 323,329 ****

    char DecodeKeyAndChar(char nextkey, char nextchar) {
    ! char *msg = “[DEC:-->";

    msg[5] = nextkey;
    msg[6] = nextchar;
    — 323,329 —-

    char DecodeKeyAndChar(char nextkey, char nextchar) {
    ! static char msg[] = { ‘[', 'D', 'E', 'C', ':', '-', '-', '>', '\0'};

    msg[5] = nextkey;
    msg[6] = nextchar;
    ***************
    *** 428,434 ****
    printf(“\n”);
    printf(“Prefix encode or decode string with ‘?’ to\n”);
    printf(“all details of ring movements.\n”);
    ! return;
    }

    if (argc > 2) keystore = argv[1];
    — 428,434 —-
    printf(“\n”);
    printf(“Prefix encode or decode string with ‘?’ to\n”);
    printf(“all details of ring movements.\n”);
    ! return (1);
    }

    if (argc > 2) keystore = argv[1];
    ***************
    *** 472,476 ****
    printf(“%c%c%c\n”,Ring(1),Ring(2),Ring(3));
    }
    printf(“Final: %s\n”, result);
    }
    -
    \ No newline at end of file
    — 472,477 —-
    printf(“%c%c%c\n”,Ring(1),Ring(2),Ring(3));
    }
    printf(“Final: %s\n”, result);
    +
    + return (0);
    }

  9. Chris S says:

    @userw014

    “fidget” isn’t a user-friendly proof-of-concept example!

    I can see that. Quoting myself from the accompanying paper…

    “Included with this paper is the sample C code used to test the Fidget protocol. The code is not of great quality, and is in need of serious rework. It is likely to be most valuable as a working example of the protocol for others to re-implement.”

    This code doesn’t behave well with mixed case strings to encode.

    “All strings must be uppercase letters.” It says so in the code. I didn’t reach the point of needing to decide between arbitrarily converting all strings to uppercase or always throwing an error if you used any non-uppercase characters.

    All told – 4 changes, and none of them to the ring manipulation code. Call me ‘satisfied’ – ‘pleased’ wasn’t going to be on the menu for this code.

  10. Chris S says:

    Cory – seems to be something amiss with the Fidget .zip file. Extra bytes on the front, or something?

  11. Cory Doctorow says:

    Hmm — works for me! Try again?

  12. ehamiter says:

    Jesus, those are both super complicated. Or maybe I’m no cryptographer. Well, there’s no maybe to it.

  13. palad says:

    Fidget.zip worked fine for me, but I had trouble getting out to the wiki.yobi.be link.

  14. kleer001 says:

    My concern with the pretty rings is sliding and alignment, fixed alphabet and dots. To combat that I’m designing a crypto braclet with 36 blank slots and a smooth interlocking design.
    For those interested click through to my BB user page to my flickr page and await the neatoness.
    shapeways.com is awesome for rapid prototyping! i loves them.

  15. Chris S says:

    I just had someone at the next desk verify – same results.

    It comes up as corrupted, whether we do “click and go” or “save and open”.

Leave a Reply