📄 timing_rsa.c
字号:
static unsigned char d[] =
"\x0a\x3e\x45\x7b\xbd\xdb\xa8\x5d\xaf\x8b\xb3\x93\xcc\xb8\x84\x2a"
"\xbe\x7c\x84\x5d\x5c\xdd\xb5\x73\x26\x8d\x66\xd7\xb4\xff\x72\x7c"
"\x10\x46\x70\x5f\x83\xd1\x7b\x12\x5e\x81\x80\xd5\xdf\xb4\x00\xeb";
static unsigned char dmp1[] =
"\xb7\x8e\xd4\x06\xbd\xde\x18\xbb\xd8\x53\x0b\x92\x42\xe6\x82\x8c"
"\x0c\x92\xfb\x1d\xd1\x69\xc3\x77";
static unsigned char dmq1[] =
"\xbb\x35\x9d\xf6\x4e\x27\xb6\x2b\xf2\x2e\x9e\x34\xde\xbb\x1c\x68"
"\x27\xeb\x11\x0f\x36\x9c\xc6\xe1";
static unsigned char iqmp[] =
"\x12\xa7\x34\xd0\x00\xf3\x58\xfc\x68\xc0\x33\xba\xa6\x15\x4c\xc0"
"\x2d\xad\x23\x9c\x98\xc0\xd1\x6c";
static unsigned char ptext[] =
"\x4a\xe5\x89\x81\xf0\xd7\x93\xdd\x5a\x31\xa6\x91\x10\xa0\xe9\xe3"
"\xe6\x21\xfe\x59\xbb\xd4\x92\x43\xd9\x7b\xfb\x97\xc2\x28\xcd\x01"
"\x06\x71\x62\x7c\xb3\xab\x9d\x2e\x11\x73\x67\xdf\x39\xb3\xbc\x37";
static unsigned char ctext[] =
"\x49\x00\x9f\xd4\x87\x99\x1d\x73\xa7\xe3\xfc\xe0\xf7\x3e\x9d\x79"
"\x1e\xf5\x65\xf2\x4a\xef\xb3\x15\xfd\xbe\x20\xe4\xb6\xa7\xb5\x0e"
"\xe0\x7b\xb9\xc6\xb8\x2a\x4e\x87\x0d\x62\xc5\x32\xaa\xee\xd3\xb1";
SetKey;
}
static int key512(RSA *key)
{
static unsigned char n[] =
"\x4d\x0f\x84\xeb\x97\x11\xf0\x1d\x83\x56\xa7\xc4\xc6\xee\x6e\x71"
"\x0d\x4f\xfb\xa7\x6a\xcc\xe3\x19\x37\x8d\x25\xa3\xcd\x25\xf1\x72"
"\x30\x87\xa4\x16\xbd\x1c\x74\xcb\x82\xbc\xb3\xf0\x5f\x0a\xaf\x84"
"\x2f\x53\xe2\xdd\x31\xd8\x26\x5e\x7f\x3f\xf1\x1e\xa6\xfb\x03\x4d";
static unsigned char p[] =
"\x96\x2b\x58\x36\x30\xfe\x34\x17\xc2\x56\x34\x22\xc4\xa3\x59\x72"
"\x51\xb5\xd0\x3b\x8f\xcd\x91\x46\x46\x39\xd1\x41\xa4\xa8\xe9\x47";
static unsigned char q[] =
"\x83\x5e\x56\xb6\x40\x2f\xed\x2a\xd6\xc0\x34\xf8\x2c\xee\x9b\x5c"
"\xe3\x90\xdd\x37\xd8\x21\x18\x9b\xee\xe6\x06\x1b\xa7\x29\xb8\xcb";
static unsigned char e[] =
"\x33\x05\xf2\xcd\x7a\x1d\x99\xaa\x13\xd2\xcf\x22\x31\xfd\x6a\x0b"
"\x6a\x72\xa6\xbd\x04\xd9\x4d\x16\x55\xac\xad\x4d\x81\xef\x20\xb3"
"\x46\xf8\x0f\x4a\x2b\xf7\x4a\x28\xde\x57\x09\x79\x92\xb4\x04\xe5"
"\x56\x58\x8c\xed\x6c\x1a\xcd\x4e\xbf\x05\x3f\x68\x09\xf7\x3a\x93";
static unsigned char d[] =
"\x01\x8d\x04\xdd\xf9\xe8\x54\x87\x45\xd1\xbe\x5b\x0d\xee\xea\x15"
"\xd3\x3f\xcd\x5d\x3b\x7c\x84\xd5\xee\x49\x28\x1f\xc8\x63\x18\x74"
"\x75\xc4\x9e\x9c\xc8\xf3\x72\x0b\x46\x7e\x42\xc7\x3b\xe5\x62\xb4"
"\x93\x3f\x0f\xf5\xbb\xd9\x3c\xbc\xf6\x23\x69\xfb\x16\x7b\x1f\xff";
static unsigned char dmp1[] =
"\x7f\xfe\x3b\xd6\x9c\x5d\xfc\x12\x6f\x1a\x98\x86\x6e\x1a\x26\xa9"
"\x57\x5d\x75\x65\x6e\x28\x82\xbf\xb8\x4a\x35\xf1\x7c\x0b\x75\xc5";
static unsigned char dmq1[] =
"\x2a\x90\x74\x3d\x46\x8d\x6c\xbb\x09\xea\xce\x22\xab\x1d\x56\x96"
"\x4d\x4e\xd4\xae\x1b\x10\x6b\x8e\xfa\x59\x65\xb6\x0f\xba\x63\x7d";
static unsigned char iqmp[] =
"\x76\x32\xb6\x0a\x26\x0e\x28\xca\x77\x12\x9e\x24\x3a\x03\x0b\x28"
"\xc2\xb1\x35\x1a\xcd\x2b\xb2\x8a\x9c\x1c\xa2\x24\x48\x64\x35\x1b";
static unsigned char ptext[] =
"\x0c\x5b\x47\x88\xae\xc7\x0f\x63\x45\x1a\x95\x79\xe7\x53\xdc\x64"
"\x4e\x1e\xd2\x02\x28\x90\x04\x3a\xb3\xe5\xb7\x68\xd4\x5b\x7c\xfd"
"\xe6\x4b\x6a\xd5\xe9\xe5\xbe\x74\x41\x75\x47\xe7\xd5\x67\xaa\x22"
"\x54\xf4\x7b\xa7\x6b\x70\x8d\x95\xc9\xd7\x03\xc0\x00\xe9\x08\x8f";
static unsigned char ctext[] =
"\x0b\x0b\xbc\x1f\x54\x31\x69\x6c\xd2\x5d\x95\xe6\xbc\xcd\x4b\xbf"
"\x44\xdf\x51\xa3\x5e\x9b\xdf\xb9\xbf\x15\x63\x95\xf6\x87\x33\x21"
"\x89\xd6\x71\x7a\xe4\x35\xa9\xaa\xa1\xc6\xaf\x48\xd7\x0f\x10\x77"
"\x97\xcf\x6e\x07\x93\x9f\x0a\xc7\xf7\x4c\x7e\xd2\x0c\x51\xa3\x2f";
SetKey;
}
static int key768(RSA *key)
{
static unsigned char n[] =
"\x9b\x9b\xae\x67\xc9\x5d\xf3\xb0\x59\x10\xd4\xc5\xee\xfd\x2a\xcf"
"\x6a\xbf\xf2\xd7\x88\x5e\x6f\x14\x92\xb8\xd9\x47\x9d\x79\x99\x1d"
"\xc6\xc6\x5e\x67\xc9\x8b\x91\x6d\x0e\x7c\xf5\x2c\xd0\x6a\x0a\xb0"
"\x73\xbb\xec\xbb\x9f\xf2\x4f\x6f\x20\x04\x15\x72\xdf\xf5\x81\xac"
"\x2d\xb8\x1b\xd3\x15\x4d\x39\x26\xa5\xb9\xd3\x4e\x90\xb6\x8c\x98"
"\x80\x0f\x64\xde\x41\x33\x38\x5a\x24\xa6\xdd\xe1\x41\xc2\x54\x2f";
static unsigned char p[] =
"\xd0\x49\xc6\xb1\x49\xb3\x11\xc3\x56\xd9\x07\x1c\x7a\x39\xb9\x3b"
"\xed\x44\x89\x14\x39\x28\x10\x58\x23\x57\x53\x5d\x7a\x43\xa3\x64"
"\xb6\x1c\xf0\x70\xfc\x13\x82\xe6\xc6\xcf\x90\x45\xfe\x57\xd6\x1b";
static unsigned char q[] =
"\xbf\x40\xb1\xde\x40\xc6\x9d\x9c\x56\xa8\xd7\x9d\xb9\x02\x85\xb0"
"\xf7\xee\x5f\xbd\x40\x73\x4d\xe0\xd3\xfe\x61\x71\x55\x38\x43\x99"
"\x41\x5f\x23\xa3\xb7\xce\x2a\x4d\xb1\xd4\x6a\x31\xd3\x3c\xeb\x7d";
static unsigned char e[] =
"\x0e\xb0\x0d\xf7\x81\xc7\x4a\xad\x95\x02\x48\x46\x0b\xe5\xfb\x92"
"\xf1\xef\x37\x14\xdd\x67\xc5\xbb\x7d\x3b\x24\xa2\xa8\xcc\xe9\x4a"
"\x65\xba\x81\x92\x5f\xa5\x85\xf4\x4c\xf0\xeb\xcf\xc4\x4b\x57\x4f"
"\x16\x44\xfe\x43\x07\xe5\x98\xc4\x0a\xf0\x77\x98\x94\x76\x94\x91"
"\x31\xec\x74\x39\x6b\xaf\xa4\x03\x31\xac\xa8\x06\xae\xf2\x2f\x6b"
"\x2f\xe2\x8a\xad\xe2\xdb\x92\x88\x28\xf0\x34\x7a\x69\xbe\xbb\x41";
static unsigned char d[] =
"\x8e\x4f\x65\x7e\x3c\x74\x74\x8a\xd4\x0c\x3d\x1f\x6e\xdb\x2b\xf3"
"\xa8\xc7\x15\xbb\x47\x83\xad\x8a\xa7\xa4\xb2\x62\xed\xdd\x4c\x0e"
"\xf3\xc0\xeb\x14\x99\x8e\xa5\xa2\x25\x13\x9d\x8f\xd8\xfa\x51\x5d"
"\xf0\x79\xeb\xc6\xcd\xb1\xfd\xa9\x36\x4f\xf6\xf7\xf4\x28\xf9\x33"
"\x3b\xcd\x35\x79\x14\x57\x91\xc4\x7f\x20\x49\x69\x56\x5c\x1e\xf7"
"\x7e\xfc\x32\x7d\x55\x05\xfc\x74\x7e\x0a\xc5\x20\xa7\x46\xea\x81";
static unsigned char dmp1[] =
"\x7f\x6a\x8a\x6c\xa2\x9d\x3e\xad\xbb\x92\x38\x1f\x32\xbf\x1f\xbb"
"\x50\x14\xa9\x85\x7e\xc8\x8e\xba\x60\xd7\x90\xed\x67\xe3\x2e\x45"
"\xfb\x4a\x43\x23\xed\x93\xe5\xe9\x4b\xce\x60\x49\x68\x63\x87\x57";
static unsigned char dmq1[] =
"\x14\x51\xef\xc0\xd7\x8f\x1b\x62\xd4\x5d\xc4\xe7\x24\x34\x3e\x84"
"\xb4\x18\x66\x3c\xb7\x13\x1a\xa6\x97\xc7\xf3\x85\x88\x65\xb8\x3c"
"\x0d\x2f\xc8\xd1\x53\xae\xec\x9f\xcf\xf4\x9f\x52\x04\xec\x17\x15";
static unsigned char iqmp[] =
"\x72\x78\x6e\x3c\x40\x77\x90\x4c\x41\xbe\x6a\xd8\x7d\x00\x26\x5b"
"\x37\xbb\x36\x55\x5a\x9c\x7b\x51\x46\x24\x5b\xdd\x7f\x85\x73\x7f"
"\xcc\xc8\xe6\xec\x00\xcb\x6a\xf3\xcd\x37\x4e\x6e\x5f\x12\x9d\x2e";
static unsigned char ptext[] =
"\x6a\xf0\x88\xc7\xb5\x81\x18\x2e\x7f\x82\x06\x65\x41\x3f\x60\x4b"
"\x2a\x4b\xf9\x82\x55\x31\x9a\x1e\x92\xc1\x61\xba\xc8\xbe\x1b\xf9"
"\x30\x91\xd2\x11\x26\x12\x5b\xac\x89\xad\xbf\x15\x73\x21\x3a\xa7"
"\x9b\xbc\x90\x97\x41\xcb\x20\xe4\xf5\x79\xb1\x0e\x21\x6f\x8a\x3c"
"\xd2\xe5\xe8\x73\x41\xfa\x1b\xd9\x4b\x4e\xc2\xe7\x13\x3b\x1d\x25"
"\xef\x12\x4b\x9c\x11\x3e\x75\xf8\x35\xee\x88\xe9\xe3\xf0\x7d\x34";
static unsigned char ctext[] =
"\x5d\x47\xe5\x77\x2e\xa0\xce\xa2\x4c\x9b\x33\x42\xf2\x1c\xdd\x22"
"\x9e\x5e\x4c\x64\xac\x15\xc8\x9e\x5d\x78\x4d\x6f\x85\xdc\x3f\x02"
"\xb0\x94\xcd\x3c\xa6\xea\x74\x54\x43\x96\x25\xaa\x7d\x45\x8c\x2b"
"\x02\x82\x67\xdd\x42\x3a\xe3\x5e\x6d\xff\x76\x3a\x89\xd4\x33\xdd"
"\x54\xe3\xbb\x65\xef\x49\x91\xf1\x04\xb1\xfc\xa2\x3f\xdb\x64\x1b"
"\x2c\xd4\xac\x06\x1f\x82\x85\x1c\x2b\xdc\xeb\x76\x58\x81\xfb\x60";
SetKey;
}
static int key1024(RSA *key)
{
static unsigned char n[] =
"\x83\xc7\x85\x42\x56\x1a\x73\x7c\xdf\xbe\xf8\x91\x21\xf0\xb2\xd6"
"\x49\x4b\x15\xc4\xd9\xb8\xdc\xdc\x0b\x6e\x47\x77\x4d\xee\x1c\x0a"
"\xfa\x52\xa4\xe9\xbf\x1f\x3e\x6b\xc2\x4b\x54\xbc\x33\xa6\x6f\xa3"
"\x66\xb3\x2d\x27\x0c\x04\xe2\x67\xbf\x3a\x4a\x8f\xf4\x4b\xfc\x94"
"\x80\x21\x56\xee\x75\xe6\xc5\x18\x2c\x95\x54\xca\xd7\x42\xc6\x1f"
"\xef\x20\x65\xd6\xcd\x6d\xe2\xc2\x4a\x3b\xc5\x5b\x19\x1c\x00\xf5"
"\xca\x6d\xae\x43\x33\xe4\xf6\x0e\x2b\xfd\x69\x20\x9d\xd7\xd9\x09"
"\xfa\x44\x29\xc1\x25\xce\x62\x5d\xc5\xd4\x61\x5f\x62\x56\x62\x8f";
static unsigned char p[] =
"\xec\x72\x9f\x54\x43\x52\xa0\x09\x78\x9c\x4f\x3d\xd7\x31\x2c\x3b"
"\xae\xdf\x8b\x8e\xf1\x35\xca\xe0\x23\x64\xba\x4d\xc8\xf6\x08\x47"
"\x6a\x48\xc0\xa5\x06\xc7\x98\xd6\x54\xbd\x06\x43\x55\xf0\xdb\xf9"
"\x82\xf5\xcc\xe6\xb0\xa2\xa6\x22\xba\x3c\xb1\x4c\x80\xa9\xf2\xf3";
static unsigned char q[] =
"\x8e\xad\x2a\xae\x71\x6e\xe1\x2e\x4b\x38\x0b\x6b\xc2\xb0\x91\x5f"
"\x06\xf9\x6e\x4d\xa5\x96\x26\xba\xff\xb9\x18\x1a\xb1\x6c\x82\x94"
"\x24\xd6\x4c\xcf\xc0\x0e\xb6\xed\x20\x11\xac\xee\xd7\x2d\x79\x80"
"\xc3\x3e\x25\xb8\x53\x54\xa4\x41\xb8\xf4\x6e\xf4\xd5\x03\xa0\xf5";
static unsigned char e[] = "\0x11";
/*
"\x0f\xf2\x42\xec\x0f\x4c\x67\x52\x63\x22\x4a\xa6\x6c\x9f\x13\x0b"
"\x60\x46\xf5\xc5\xd9\xd2\xea\x55\x2f\x93\xea\x8b\x56\x0e\x8a\xe4"
"\xec\xc0\xac\xb3\xf2\x76\x4d\x6b\xb4\xf5\xa5\x51\x82\x5f\x46\xdf"
"\x87\x00\x61\x74\x97\x8e\x01\x78\x97\xda\xf5\xab\xc0\xd0\xe1\xe3"
"\x92\x72\x7a\xde\xc1\x01\x66\x01\x46\xef\xba\xf2\x05\xf6\x24\x9c"
"\x4d\x00\x46\x8a\xde\xcb\xe3\xcc\x0d\x1a\x64\x3e\xe3\x42\xd9\x0a"
"\xf1\x60\x39\x05\xd0\x3a\xf0\x20\x29\xae\xad\xaf\xf0\x4b\xdd\xf9"
"\x5b\xfb\x85\x2c\x6a\x20\x37\xfb\xff\xd2\xd1\x90\xed\xe7\x1b\x6d";
*/
static unsigned char d[] =
"\x15\xb5\xd5\x3b\x85\x93\x1d\xad\x7a\x58\x27\xc0\xba\x09\x83\xf6"
"\x7e\x3f\x7b\x29\x45\x76\x34\x5b\x91\xf3\x02\x28\x17\x75\x3d\x37"
"\xe8\x87\x6a\xb4\x8c\xce\x4d\x94\x09\x51\x2a\xb7\xe8\xc2\x1d\xdd"
"\x73\x4e\xc3\x21\x76\x29\x2f\x5b\xb8\xd2\x9c\x67\x45\xed\xc2\xff"
"\xcf\xb9\xdd\xe1\x7b\xaa\x55\x79\xf0\xbd\x77\xa2\xa3\xa3\xbe\x48"
"\x6f\x30\x69\xb7\x35\xac\x99\x82\xa2\x34\x1d\xf9\xb0\x13\xfd\x56"
"\x8c\xab\x9c\x97\x13\xdc\xdb\xb8\x76\x01\x46\xba\x00\x02\xcd\x17"
"\xfd\xf4\x10\xe4\xf3\xf9\x25\xd2\x63\x0f\x5f\x57\x65\x39\x9a\xd5";
static unsigned char dmp1[] =
"\x7a\x7f\x11\x79\xb7\x00\xd3\xae\x80\x09\x0a\x88\x82\x54\x32\xc0"
"\x6b\x82\x06\xc2\x20\x09\x74\x75\x8d\x5a\x98\x2e\xbb\x55\x91\x47"
"\xd4\xd9\x1a\x82\xa5\x2e\x22\x41\xf3\x2f\x99\x02\xca\x7a\xe4\x19"
"\x80\x04\xc3\xa1\x49\x67\x72\x49\x56\x3b\x31\x01\xe3\xed\xd4\x8f";
static unsigned char dmq1[] =
"\x50\xe1\xf4\xe3\x1c\x71\xc0\xcc\x30\xa5\x92\xf4\x1f\x1f\xfa\xf8"
"\xcb\x1e\x1d\x23\x9a\xf0\x54\x4d\xb1\x63\xcc\xcf\x3e\x03\xde\xc4"
"\x67\x10\xf7\x48\xb1\xbe\x9c\x1e\x49\x2f\x05\x47\x8e\xc9\x01\xfb"
"\x63\x46\x30\x31\x75\xc6\x07\xf5\x24\x02\x93\xf5\x59\x8b\xdf\x39";
static unsigned char iqmp[] =
"\x0e\x9c\x6f\xb4\x8f\x18\x43\x9b\xd3\x03\xa0\x38\x86\x25\x51\xaf"
"\x9b\xc2\x5b\x84\x47\x2d\xa2\xee\xb3\x73\x37\x2c\xb6\x47\xdd\x39"
"\xf8\xcc\xd6\x96\xb9\xdd\xe4\x94\xd8\xfc\x9a\x61\x2f\x48\x04\x79"
"\x3e\x1c\xab\x25\xf3\x9f\x37\x8f\xda\x04\xa5\x17\xcc\x6c\x02\xe9";
static unsigned char ptext[] =
"\x31\xe0\x9c\x9a\xda\x4e\x9c\xd9\xac\x50\x25\x39\x80\xc6\x02\x93"
"\x83\x84\xd2\x73\xe4\x62\xb5\x1b\x30\x20\xac\x1a\xff\x25\xf4\x91"
"\xcb\x72\x5b\x49\x5e\x68\x91\x14\x72\x32\x82\x00\xb0\xb0\xee\xa1"
"\x03\x5d\x93\x02\x1a\x72\x6c\xeb\x72\x41\xc6\x1e\x4e\x85\xc0\x08"
"\x3a\x6c\x36\x2d\xab\x96\xaa\xb5\x64\xd1\x6f\xed\xcf\xb1\xd4\x31"
"\xf5\xd2\xa9\xbc\x8d\xd7\x67\xe4\x25\xb0\x96\x15\x63\xdb\xd7\x90"
"\xdf\x51\x1c\x3a\x4e\x17\x6b\x70\x5f\xe8\x73\xd1\x0a\x59\x78\x7d"
"\xb5\xda\x0b\xe8\x1a\x1b\xb0\xbe\xb0\x08\xaf\x7f\xf5\x4a\x3c\xd1";
static unsigned char ctext[] =
"\x73\x1e\x6a\x48\xc2\x16\xee\x24\x77\x9a\xbb\x90\xe6\x47\x55\x24"
"\x5f\xe5\x46\x02\x07\x9e\x2f\x99\x9d\x60\xd2\xad\x23\x5c\xea\x93"
"\x1c\x83\x84\x03\xea\x85\x35\xec\x16\xa4\x51\x19\x27\x71\x00\x11"
"\x01\x8b\x0a\x6b\xc3\xcb\x55\x90\x53\xfd\x10\xd1\x82\x78\x30\x1d"
"\xd6\x93\x10\xe5\xa7\x15\x16\xcc\x44\xcf\xa3\x5c\x54\x43\x51\xcd"
"\xbb\x37\xc2\x29\x41\x1f\xcc\xd1\x7e\xb2\x3f\xf4\x3b\x4f\xc0\x92"
"\x9e\x0f\xbb\x61\x2f\x7d\xe0\x0d\x21\x49\x98\x37\xa1\x8d\xb1\x7e"
"\xeb\x65\x75\x10\xf8\xa4\x5e\xb4\xfe\x14\xca\xcd\xb8\x85\x34\x16";
//SetKey;
key->n = BN_bin2bn(n, sizeof(n)-1, key->n);
key->e = BN_bin2bn(e, sizeof(e)-1, key->e);
key->d = BN_bin2bn(d, sizeof(d)-1, key->d);
key->p = BN_bin2bn(p, sizeof(p)-1, key->p);
key->q = BN_bin2bn(q, sizeof(q)-1, key->q);
key->dmp1 = BN_bin2bn(dmp1, sizeof(dmp1)-1, key->dmp1);
key->dmq1 = BN_bin2bn(dmq1, sizeof(dmq1)-1, key->dmq1);
key->iqmp = BN_bin2bn(iqmp, sizeof(iqmp)-1, key->iqmp);
memcpy(pt0, ptext, sizeof(ptext) - 1);
memcpy(ct0, ctext, sizeof(ctext) - 1);
plen = sizeof(ptext) - 1;
clen = sizeof(ctext) - 1;
return (sizeof(n)-1)*8;
}
static int key1280(RSA *key)
{
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -