OPENSSL RSA Public Encryption

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • homoon
    New Member
    • May 2012
    • 1

    OPENSSL RSA Public Encryption

    Hi all,

    I can't get the expected result in this RSA function, is there any mistake? Many thanks!!!!!!:

    Code:
    char* RSAEN2()
    {
        int ret, flen;
        BIGNUM *bnn, *bne, *bnd,*mods, *pub_exp;
        unsigned char *in = "01019D45855EF1686D61A8D9CB54C854A794E68F7A0B2923FBD0";
        unsigned char *out;
        
        bnn = BN_new();
        bne = BN_new();
       // bnd = BN_new();
        
        mods="AF2310A44E8942B3020235327334F83468BC129DBA16176BB4244745831EF09DB131615A962721E1AD69C866DB88178C67BD857FB1FDA1AF92FBE2AD43BD82D29315E49FFD023F0E2F769AA805D23CEB46A8182C7546BA6B55A2EC9E86DE036E1C2716F331FDACB7F0BA68D7EBD70F4891070CD4C1CE1DDFC85F93B3D58EEB1D";
        pub_exp="010001";
        
        
        BN_hex2bn(&bnn, mods);
        BN_set_word(bne, pub_exp);
        //BN_hex2bn(&bnd, PRIVATE_EXPONENT);
        
        RSA *r = RSA_new();
        r->n = bnn;
        r->e = bne;
        r->d = NULL;
        RSA_print_fp(stdout, r, 5);
        
        flen = RSA_size(r);// - 11;
        out = (char *)malloc(flen);
        bzero(out, flen);
        //memset(out, 0, flen);
        
        printf("Begin encrypt... ");
        ret = RSA_public_encrypt(flen, in, out, r,  RSA_NO_PADDING);
        if (ret < 0)
        {
            printf("Encrypt failed! ");
            return 1;
        }
        
        printf("Size:%d ", ret);
        printf("ClearText:%s ", in);
        printf("CipherText(Hex):");
        int i;
        for (i=0; i<ret; i++)
        {
            printf(" %02X", *out);
            out++;
        }
        printf(" ");
        
        //free(out);
        RSA_free(r);
        return 0;
    }
    Plain text=01019D4585 5EF1686D61A8D9C B54C854A794E68F 7A0B2923FBD0

    Modulus=AF2310A 44E8942B3020235 327334F83468BC1 29DBA16176BB424 4745831EF09DB13 1615A962721E1AD 69C866DB88178C6 7BD857FB1FDA1AF 92FBE2AD43BD82D 29315E49FFD023F 0E2F769AA805D23 CEB46A8182C7546 BA6B55A2EC9E86D E036E1C2716F331 FDACB7F0BA68D7E BD70F4891070CD4 C1CE1DDFC85F93B 3D58EEB1D

    Exponent=010001

    Expected Result=0B 51 48 DF 6D E3 D1 17 75 87 9A 1D BA 78 87 4B 08 38 FB 2A 19 E6 5A B3 7D DF 26 93 85 83 2A DF 5E 11 BB 05 90 10 FA A3 84 0A E7 03 CE 4D 9E 49 BC BB F3 90 B0 02 B3 A6 79 99 72 7F 90 6E BA D9 E2 C9 26 96 0F 6F 85 FC FC 67 77 A9 5D 31 B6 12 A9 C6 C8 C9 F4 CC 5D 05 0D 79 BD A0 21 3C DE B2 EA 89 2B A7 FF E5 A8 FE 8E A8 10 07 8D 62 8E D9 D7 51 09 2A 16 C8 5D 36 55 1C 62 E3 2C 01 5D 25


    My Wrong Result=69 B7 54 C6 75 34 C2 8F 86 D1 E4 04 73 18 73 9B 1C 4F 49 2A AE 24 8C E1 14 9F 56 BE 4B D2 9F 71 AE 84 15 E3 42 F5 D2 33 21 90 22 D5 E4 35 C0 ED DC 28 76 8D 0B 4B 47 B5 65 F6 0A 7B A7 F8 42 DC 73 0F 7B A2 5F 61 19 45 76 EF 5C FC 43 B4 F5 F6 1E 92 E3 49 DD 1F 2D DB F0 7E 0B DA 2A 5C 07 D9 A0 F4 E0 EC 74 D4 22 C3 98 DC 87 40 0C 14 8C 47 2D 58 3D A0 68 B5 54 6C B8 BD F7 D0 A3 9A AC C8
Working...