确定性随机数发生器测试向量——DRBG-CTR-AES128

目录

结构体定义

测试用基本量

drbg_ctr_aes128测试数据


结构体定义

//DRBG测试中用, 因测试使用数据有很多相同之处

typedef struct dat_st

{

       int          len;

       char *     dat;

}tvstr;

//DRBG的测试向量

typedef struct drbg_test_vector_st

{    

       char *     inf;                //测试向量的附加信息说明

       int          alg;                //DRBG算法

       int          prflag;                  //prediction_resistance_flag: 1 = ENABLED; 0 = NOT ENABLED

       tvstr *    entropy_init;  //EntropyInput 初始化时的熵

       tvstr *    entropy_reseed1;//EntropyInput1 (for Reseed1) 第次reseed时的熵

       tvstr *    entropy_reseed2;//EntropyInput2 (for Reseed2) 第次reseed时的熵

       tvstr *    nonce;                  //Nonce

       tvstr *    personal;              //PersonalizationString

       tvstr *    additional1;   //AdditionalInput 1

       tvstr *    additional2;   //AdditionalInput 2

       int          rlen1;           

       char *     gen_rnd1;             //generate rand val 1

       int          rlen2;           

       char *     gen_rnd2;             //generate rand val 1

}DRBGTV;//DRBG的测试向量

测试用基本量

tvstr Entropy_032 =

{

       32,

       "00010203 04050607"

       "08090A0B 0C0D0E0F 10111213 14151617 18191A1B 1C1D1E1F",

};

tvstr Entropy_040 =

{

       40,

       "00010203 04050607 08090A0B 0C0D0E0F"

       "10111213 14151617 18191A1B 1C1D1E1F 20212223 24252627",

};

tvstr Entropy_048 =

{

       48,

       "00010203 04050607 08090A0B 0C0D0E0F 10111213 14151617"

       "18191A1B 1C1D1E1F 20212223 24252627 28292A2B 2C2D2E2F",

};

tvstr Entropy1_032 =

{

       32,

       "80818283 84858687"

       "88898A8B 8C8D8E8F 90919293 94959697 98999A9B 9C9D9E9F",

};

tvstr Entropy1_040 =

{

       40,

       "80818283 84858687 88898A8B 8C8D8E8F"

       "90919293 94959697 98999A9B 9C9D9E9F A0A1A2A3 A4A5A6A7",

};

tvstr Entropy1_048 =

{

       48,

       "80818283 84858687 88898A8B 8C8D8E8F 90919293 94959697"

       "98999A9B 9C9D9E9F A0A1A2A3 A4A5A6A7 A8A9AAAB ACADAEAF",

};

tvstr Entropy2_032 =

{

       32,

       "C0C1C2C3 C4C5C6C7"

       "C8C9CACB CCCDCECF D0D1D2D3 D4D5D6D7 D8D9DADB DCDDDEDF",

};

tvstr Entropy2_040 =

{

       40,

       "C0C1C2C3 C4C5C6C7 C8C9CACB CCCDCECF"

       "D0D1D2D3 D4D5D6D7 D8D9DADB DCDDDEDF E0E1E2E3 E4E5E6E7",

};

tvstr Entropy2_048 =

{

       48,

       "C0C1C2C3 C4C5C6C7 C8C9CACB CCCDCECF D0D1D2D3 D4D5D6D7"

       "D8D9DADB DCDDDEDF E0E1E2E3 E4E5E6E7 E8E9EAEB ECEDEEEF",

};

tvstr Personal_032 =

{

       32,

       "40414243 44454647"

       "48494A4B 4C4D4E4F 50515253 54555657 58595A5B 5C5D5E5F",

};

tvstr Personal_040 =

{

       40,

       "40414243 44454647 48494A4B 4C4D4E4F"

       "50515253 54555657 58595A5B 5C5D5E5F 60616263 64656667",

};

tvstr Personal_048 =

{

       48,

       "40414243 44454647 48494A4B 4C4D4E4F 50515253 54555657"

       "58595A5B 5C5D5E5F 60616263 64656667 68696A6B 6C6D6E6F",

};

tvstr Additional1_032 =

{

       32,

       "60616263 64656667"

       "68696A6B 6C6D6E6F 70717273 74757677 78797A7B 7C7D7E7F",

};

tvstr Additional1_040 =

{

       40,

       "60616263 64656667 68696A6B 6C6D6E6F"

       "70717273 74757677 78797A7B 7C7D7E7F 80818283 84858687",

};

tvstr Additional1_048 =

{

       48,

       "60616263 64656667 68696A6B 6C6D6E6F 70717273 74757677"

       "78797A7B 7C7D7E7F 80818283 84858687 88898A8B 8C8D8E8F",

};

tvstr Additional2_032 =

{

       32,

       "A0A1A2A3 A4A5A6A7"

       "A8A9AAAB ACADAEAF B0B1B2B3 B4B5B6B7 B8B9BABB BCBDBEBF",

};

tvstr Additional2_040 =

{

       40,

       "A0A1A2A3 A4A5A6A7 A8A9AAAB ACADAEAF"

       "B0B1B2B3 B4B5B6B7 B8B9BABB BCBDBEBF C0C1C2C3 C4C5C6C7",

};

tvstr Additional2_048 =

{

       48,

       "A0A1A2A3 A4A5A6A7 A8A9AAAB ACADAEAF B0B1B2B3 B4B5B6B7"

       "B8B9BABB BCBDBEBF C0C1C2C3 C4C5C6C7 C8C9CACB CCCDCECF",

};

tvstr Entropy_055=

{

       55, 

       "000102 03040506"

       "0708090A 0B0C0D0E 0F101112 13141516 1718191A 1B1C1D1E"

       "1F202122 23242526 2728292A 2B2C2D2E 2F303132 33343536",

};

tvstr Entropy_111 =

{

       111,

       "000102 03040506 0708090A 0B0C0D0E"

       "0F101112 13141516 1718191A 1B1C1D1E 1F202122 23242526"

       "2728292A 2B2C2D2E 2F303132 33343536 3738393A 3B3C3D3E"

       "3F404142 43444546 4748494A 4B4C4D4E 4F505152 53545556"

       "5758595A 5B5C5D5E 5F606162 63646566 6768696A 6B6C6D6E",

};

tvstr Entropy1_055 =

{

       55, 

       "808182 83848586"

       "8788898A 8B8C8D8E 8F909192 93949596 9798999A 9B9C9D9E"

       "9FA0A1A2 A3A4A5A6 A7A8A9AA ABACADAE AFB0B1B2 B3B4B5B6",

}; 

tvstr Entropy1_111 =

{

       111,

       "808182 83848586 8788898A 8B8C8D8E"

       "8F909192 93949596 9798999A 9B9C9D9E 9FA0A1A2 A3A4A5A6"

       "A7A8A9AA ABACADAE AFB0B1B2 B3B4B5B6 B7B8B9BA BBBCBDBE"

       "BFC0C1C2 C3C4C5C6 C7C8C9CA CBCCCDCE CFD0D1D2 D3D4D5D6"

       "D7D8D9DA DBDCDDDE DFE0E1E2 E3E4E5E6 E7E8E9EA EBECEDEE",

};

tvstr Entropy2_055 =

{

       55,  

       "C0C1C2 C3C4C5C6"

       "C7C8C9CA CBCCCDCE CFD0D1D2 D3D4D5D6 D7D8D9DA DBDCDDDE"

       "DFE0E1E2 E3E4E5E6 E7E8E9EA EBECEDEE EFF0F1F2 F3F4F5F6",

};

tvstr Entropy2_111 =

{

       111,

       "C0C1C2 C3C4C5C6 C7C8C9CA CBCCCDCE"

       "CFD0D1D2 D3D4D5D6 D7D8D9DA DBDCDDDE DFE0E1E2 E3E4E5E6"

       "E7E8E9EA EBECEDEE EFF0F1F2 F3F4F5F6 F7F8F9FA FBFCFDFE"

       "FF000102 03040506 0708090A 0B0C0D0E 0F101112 13141516"

       "1718191A 1B1C1D1E 1F202122 23242526 2728292A 2B2C2D2E",

};

tvstr Nonce05 = { 5, "20 21222324" };                                         //用于DRBG-HASH-SHA1

tvstr Nonce07 = { 7, "202122 23242526"};                                   //用于DRBG-HASH-SHA224

tvstr Nonce08 = { 8, "20212223 24252627"};                               //用于DRBG-HASH-SHA256

tvstr Nonce12 = {12, "20212223 24252627 28292A2B"};                    //用于DRBG-HASH-SHA384

tvstr Nonce16 = {16, "20212223 24252627 28292A2B 2C2D2E2F"};//用于DRBG-HASH-SHA512

tvstr Personal_055 =

{

       55,

       "404142 43444546"

       "4748494A 4B4C4D4E 4F505152 53545556 5758595A 5B5C5D5E"

       "5F606162 63646566 6768696A 6B6C6D6E 6F707172 73747576",

};

tvstr Personal_111 =

{

       111,

       "404142 43444546 4748494A 4B4C4D4E"

       "4F505152 53545556 5758595A 5B5C5D5E 5F606162 63646566"

       "6768696A 6B6C6D6E 6F707172 73747576 7778797A 7B7C7D7E"

       "7F808182 83848586 8788898A 8B8C8D8E 8F909192 93949596"

       "9798999A 9B9C9D9E 9FA0A1A2 A3A4A5A6 A7A8A9AA ABACADAE",

};

tvstr Additional1_055 =

{

       55,

       "606162 63646566"

       "6768696A 6B6C6D6E 6F707172 73747576 7778797A 7B7C7D7E"

       "7F808182 83848586 8788898A 8B8C8D8E 8F909192 93949596",

};

tvstr Additional1_111 =

{

       111,

       "606162 63646566 6768696A 6B6C6D6E"

       "6F707172 73747576 7778797A 7B7C7D7E 7F808182 83848586"

       "8788898A 8B8C8D8E 8F909192 93949596 9798999A 9B9C9D9E"

       "9FA0A1A2 A3A4A5A6 A7A8A9AA ABACADAE AFB0B1B2 B3B4B5B6"

       "B7B8B9BA BBBCBDBE BFC0C1C2 C3C4C5C6 C7C8C9CA CBCCCDCE"

};

tvstr Additional2_055 =

{

       55,

       "A0A1A2 A3A4A5A6"

       "A7A8A9AA ABACADAE AFB0B1B2 B3B4B5B6 B7B8B9BA BBBCBDBE"

       "BFC0C1C2 C3C4C5C6 C7C8C9CA CBCCCDCE CFD0D1D2 D3D4D5D6",

};

tvstr Additional2_111 =

{

       111,

       "A0A1A2 A3A4A5A6 A7A8A9AA ABACADAE"

       "AFB0B1B2 B3B4B5B6 B7B8B9BA BBBCBDBE BFC0C1C2 C3C4C5C6"

       "C7C8C9CA CBCCCDCE CFD0D1D2 D3D4D5D6 D7D8D9DA DBDCDDDE"

       "DFE0E1E2 E3E4E5E6 E7E8E9EA EBECEDEE EFF0F1F2 F3F4F5F6"

       "F7F8F9FA FBFCFDFE FF000102 03040506 0708090A 0B0C0D0E"

};

tvstr Empty = { 0, NULL,};

drbg_ctr_aes128测试数据

typedef DRBGCTRTV drbg_ctr_aes128_tv;

drbg_ctr_aes128_tv drbg_ctr_aes128[] = /* no_df use_df 测试数据合在一起*/

{

       {/* 测试向量************************************************************/

              /* inf */ (char*)"NIST提供CTR DRBG AES128测试向量", DRBG_CTR_AES128, FALSE,

              /* EntropyInput                  */    &Entropy_032

              /* Entropy1 (Reseed1)  */    &Entropy1_032

              /* Entropy2 (Reseed2)  */    &Entropy2_032

              /* Nonce                      */    &Nonce08, //no df时不需要nonce

              /* PersonalizationString*/   &Empty,

              /* AdditionalInput 1    */    &Empty,

              /* AdditionalInput 2    */    &Empty,

              /*  no df rnd_val 1             */    32,

              "1686FFCF 9F358BE7"

              "4452E647 BA156AAB 05135797 117FD1AB 317D318C 660E3D18",

              /*  no df rnd_val 2             */    32,

              "F89A638F 026010CF"

              "B9DCC706 B34C789C 07B94FD4 6DAB90EC 866A523B D05EF2CA",

              /* use df rnd_val 1       */    32,

              "8CF59C8C F6888B96"

              "EB1C1E3E 79D82387 AF08A9E5 FF75E23F 1FBCD455 9B6B997E",

              /* use df rnd_val 2       */    32,

              "69CDEF91 2C692D61"

              "B1DA4C05 146B52EB 7B8849BD 87937835 328254EC 25A9180E",

       },

       {/* 测试向量************************************************************/ 

              /* inf */ (char*)"NIST提供CTR DRBG AES128测试向量", DRBG_CTR_AES128, FALSE,

              /* EntropyInput                  */    &Entropy_032,

              /* Entropy1 (Reseed1)  */    &Entropy1_032

              /* Entropy2 (Reseed2)  */    &Entropy2_032

              /* Nonce                      */    &Nonce08, //no df时不需要nonce,

              /* PersonalizationString*/   &Empty,

              /* AdditionalInput1            */    &Additional1_032,

              /* AdditionalInput2            */    &Additional2_032

              /*  no df rnd_val 1             */    32,

              "CBFD7872 46E49C1C"

              "98569F68 5B808D8B 916F747C 09D419BE 60AF0735 2C60274A",

              /*  no df rnd_val 2             */    32,

              "3911B096 E12EE1C9"

              "DF59DD91 73BA0A49 6C39B748 705891B8 E08C1F36 E039BCE1",

              /* use df rnd_val 1       */    32,

              "E8C74A4B 7BFFB53B"

              "EB80E78C A86BB6DF 70E2032A EB473E0D D54D2339 CEFCE9D0",

              /* use df rnd_val 2       */    32,

              "26B3F823 B4DBAFC2"

              "3B141375 E10B3AEB 7A0B5DEF 1C7D760B 6F827D01 ECD17AC7",

       },

       {/* 测试向量************************************************************/ 

              /* inf */ (char*)"NIST提供CTR DRBG AES128测试向量", DRBG_CTR_AES128, FALSE

              /* EntropyInput                  */    &Entropy_032,

              /* Entropy1 (Reseed1)  */    &Entropy1_032,

              /* Entropy2 (Reseed2)  */    &Entropy2_032,

              /* Nonce                      */    &Nonce08, //no df时不需要nonce,

              /* PersonalizationString*/   &Personal_032,

              /* AdditionalInput1            */    &Empty

              /* AdditionalInput2            */    &Empty

              /*  no df rnd_val 1             */    32,

              "FA1DF743 5039C649"

              "3B14D8C8 F9715BA5 CE6EE312 20EEDEE3 65A4B6B7 2FD68554",

              /*  no df rnd_val 2             */    32,

              "021F0DA0 6944CB4B"

              "20A5E7CD 3740B1E6 AB90B3AA 66638A03 5BAC12CC F29C148A",

              /* use df rnd_val 1       */    32,

              "18FDEFBD C43D7A36"

              "D5D6D862 205765D1 D701C9F2 37007030 DF1B8E70 EE4EEE29",

              /* use df rnd_val 2       */    32,

              "9888F1D3 8BB1CCE3"

              "1B363AA1 BD9B3961 6876C30D EE1FF0B7 BD8C4C44 1715C833",

       },

       {/* 测试向量************************************************************/ 

              /* inf */ (char*)"NIST提供CTR DRBG AES128测试向量", DRBG_CTR_AES128, FALSE

              /* EntropyInput                  */    &Entropy_032,

              /* Entropy1 (Reseed1)  */    &Entropy1_032,

              /* Entropy2 (Reseed2)  */    &Entropy2_032,

              /* Nonce                      */    &Nonce08, //no df时不需要nonce,

              /* PersonalizationString*/   &Personal_032,

              /* AdditionalInput1            */    &Additional1_032

              /* AdditionalInput2            */    &Additional2_032,

              /*  no df rnd_val 1             */    32,

              "CBCA7021 E6E00F5C"

              "E8F499CA 8E566B48 05094A95 91DEDA27 47191006 3A6DA790",

              /*  no df rnd_val 2             */    32,

              "CB502773 1CCD0686"

              "04478567 64A3D2F1 909E1AB1 2FF39EF7 004390C3 F645ED70",

              /* use df rnd_val 1       */    32,

              "526CFB7F F19B8485"

              "D6283F06 7A4CB832 77A736E8 45E423AE 0A363E91 A9D95F3B",

              /* use df rnd_val 2       */    32,

              "FDDF99A0 8490FF79"

              "55D79C2F 8C372418 38813579 4C18B3D6 31E37B85 0FF5EB0F",

       },

       {/* 测试向量************************************************************/ 

              /* inf */ (char*)"NIST提供CTR DRBG AES128测试向量", DRBG_CTR_AES128, TRUE

              /* EntropyInput                  */    &Entropy_032,

              /* Entropy1 (Reseed1)  */    &Entropy1_032,

              /* Entropy2 (Reseed2)  */    &Entropy2_032,

              /* Nonce                      */    &Nonce08, //no df时不需要nonce,

              /* PersonalizationString*/   &Empty,

              /* AdditionalInput1            */    &Empty,

              /* AdditionalInput2            */    &Empty,

              /*  no df rnd_val 1             */    32,

              "89935DB7 5FC4ED67"

              "7F166E49 CAEDB105 48BB5B5E 7F8B32D6 44DFD3B7 CCDE3B60",

              /*  no df rnd_val 2             */    32,

              "B5795CE0 AFADFBA6"

              "0C337129 8D105500 531853E4 65548878 9847E053 147D5C15",

              /* use df rnd_val 1       */    32,

              "BFF4B85D 68C84529"

              "F24F69F9 ACF1756E 29BA648D DEB825C2 25FA32BA 490EF4A9",

              /* use df rnd_val 2       */    32,

              "9BD26351 37A52AF7"

              "D0FCBEFE FB97EA93 A0F4C438 BD98956C 0DACB04F 15EE25B3",

       },

       {/* 测试向量************************************************************/ 

              /* inf */ (char*)"NIST提供CTR DRBG AES128测试向量", DRBG_CTR_AES128, TRUE,

              /* EntropyInput                  */    &Entropy_032,

              /* Entropy1 (Reseed1)  */    &Entropy1_032,

              /* Entropy2 (Reseed2)  */    &Entropy2_032,

              /* Nonce                      */    &Nonce08, //no df时不需要nonce,

              /* PersonalizationString*/   &Empty,

              /* AdditionalInput1            */    &Additional1_032,

              /* AdditionalInput2            */    &Additional2_032,

              /*  no df rnd_val 1             */    32,

              "7A95EE54 39D83828"

              "95B53929 3789D040 BAAF9751 C73B1F0E 66CE39AA 0E4DE0FC",

              /*  no df rnd_val 2             */    32,

              "598F7694 08F56946"

              "EB720776 1263BABC 964F306B E99BBA5A E329E01C FA100EC2",

              /* use df rnd_val 1       */    32,

              "4573AC8B BB33D7CC"

              "4DBEF3EE DF6EAE74 8B536C3A 1082CEE4 948CDB51 C83A7F9C",

              /* use df rnd_val 2       */    32,

              "99C628CD D87BD8C2"

              "F1FE443A A7F761DA 16886436 32632335 4DA6311F FF5BC678",

       },

       {/* 测试向量************************************************************/ 

              /* inf */ (char*)"NIST提供CTR DRBG AES128测试向量", DRBG_CTR_AES128, TRUE,

              /* EntropyInput                  */    &Entropy_032,

              /* Entropy1 (Reseed1)  */    &Entropy1_032,

              /* Entropy2 (Reseed2)  */    &Entropy2_032,

              /* Nonce                      */    &Nonce08, //no df时不需要nonce,

              /* PersonalizationString*/   &Personal_032,

              /* AdditionalInput1            */    &Empty,

              /* AdditionalInput2            */    &Empty,

              /*  no df rnd_val 1             */    32,

              "C7C914C1 AF21B9D0"

              "0002C9F2 11A9AB4A 3E7C3871 2779687A 03DFFD32 645CB4CD",

              /*  no df rnd_val 2             */    32,

              "35AF6092 8E3ED896"

              "20DE692D 9660289A 2D321CBC 0F1E0A58 724B393B 7735D445",

              /* use df rnd_val 1       */    32,

              "F324104E 2FA14F79"

              "D8AA60DF 06B93B3B C1573249 58F0A7EE 1E193677 A70E0250",

              /* use df rnd_val 2       */    32,

              "78F4C840 134F40DC"

              "001BFAD3 A90B5EF4 DEBDBFAC 3CFDF0CD 69A89DC4 FD34713F",

       },

       {/* 测试向量************************************************************/ 

              /* inf */ (char*)"NIST提供CTR DRBG AES128测试向量", DRBG_CTR_AES128, TRUE,

              /* EntropyInput                  */    &Entropy_032,

              /* Entropy1 (Reseed1)  */    &Entropy1_032,

              /* Entropy2 (Reseed2)  */    &Entropy2_032,

              /* Nonce                      */    &Nonce08, //no df时不需要nonce,

              /* PersonalizationString*/   &Personal_032,

              /* AdditionalInput1            */    &Additional1_032,

              /* AdditionalInput2            */    &Additional2_032,

              /*  no df rnd_val 1             */    32,

              "DCC71C5D 851228E5"

              "EEF37E18 6AECBDAE A081040E 0EC04DBE 3328B5AB E3249D2D",

              /*  no df rnd_val 2             */    32,

              "15800389 9C6FCB09"

              "97B58522 B0AE5071 97CFE7B7 1B2D4CF0 F2E3334D 00491C12",

              /* use df rnd_val 1       */    32,

              "87D6BDA1 9F461BF0"

              "B4E1D5BC 87A265A4 AE118AF2 8AB3D8E9 62827B79 08C76279",

              /* use df rnd_val 2       */    32,

              "2D59B89D C71C48D6"

              "C327A7E2 C4328ECE AF85FB5F 8EE00226 1B0FC412 90ECE29F",

       },

};

posted @ 2022-03-26 12:00  艾米的爸爸  阅读(0)  评论(0)    收藏  举报  来源