Hi all,
I can't get the expected result in this RSA function, is there any mistake? Many thanks!!!!!!:
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
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;
}
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