亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? aesrav.cpp

?? 算法從speakfs提取
?? CPP
字號:
/*
 -------------------------------------------------------------------------
 Copyright (c) 2001, Dr Brian Gladman <brg@gladman.me.uk>, Worcester, UK.
 All rights reserved.

 LICENSE TERMS

 The free distribution and use of this software in both source and binary 
 form is allowed (with or without changes) provided that:

   1. distributions of this source code include the above copyright 
      notice, this list of conditions and the following disclaimer;

   2. distributions in binary form include the above copyright
      notice, this list of conditions and the following disclaimer
      in the documentation and/or other associated materials;

   3. the copyright holder's name is not used to endorse products 
      built using this software without specific written permission. 

 DISCLAIMER

 This software is provided 'as is' with no explicit or implied warranties
 in respect of its properties, including, but not limited to, correctness 
 and fitness for purpose.
 -------------------------------------------------------------------------
 Issue Date: 15/01/2002
*/

// usage: aes_rav /t:[knec] /b:[45678] /k:[45678]
//
// where:
//
// each of the symbols in square brakets can be used in any combination so
// that:
// 
//         /t:[knec]  selects the tests to be used
//         /b:[45678] selects the block lengths to be used (in 32-bit words)
//         /k:[45678] selects the key lengths to be used (in 32-bit words)
// and:
//         k: generate ECB Known Answer Test files
//         n: generate ECB Known Answer Test files (new)
//         e: generate ECB Monte Carlo Test files
//         c: generate CBC Monte Carlo Test files
//
// Note that, when compared with the NIST test vector sequences, this
// code implements one additional (all zero) test vector as the first
// vector in each set (test 0).

#ifdef AES_IN_CPP
#include "aescpp.h"
#else
#include "aes.h"
#endif
#include "aesaux.h"
#include "aestst.h"

#if defined(AES_DLL)
fn_ptrs fn;
#endif

using   std::cout;
using   std::ifstream;
using   std::ofstream;

enum test_type { ecb_vk, ecb_vt, ecb_nvk, ecb_nvt, ecb_me, ecb_md, cbc_me, cbc_md };

void ref_test(const char *in_file, const unsigned int it_cnt, enum test_type t_type, 
                                f_ctx *alg, const word blen, const word klen)
{   word        i, test_cnt, cnt, e_cnt, fe_cnt;
    byte        key[32], pt[32], iv[32], ect[32], act[64];
    char        str[128];
    line_type   ty;
    ifstream    inf;

    cout << "Test file " << in_file << ": ";

    inf.open(in_file);              // reference test vector file

    if(!inf)
    {
        cout << " file not found \n"; return;
    }

    cnt = 0; e_cnt = test_cnt = 0;

    for(;;)                         // while there are tests
    {
        ty = find_line(inf, str);   // input a line

        if(ty == bad_line)          // until end of file

            break;

        if(ty == block_len)
        {
              if((get_dec(str) >> 3) == blen) continue;
              
              return;
        }
        else if(ty == key_len)
        {
              if((get_dec(str) >> 3) == klen) continue;
              
              return;
        }
        else if(ty == test_no)
        {
            test_cnt = get_dec(str); continue;
        }
        else if(ty == iv_val)
        {
            block_in(iv, str); continue;
        }
        else if(ty == key_val)
        {
            block_in(key, str); continue;
        }
        else if(ty == pt_val)
        {
            block_in(pt, str);
            if(t_type != ecb_md && t_type != cbc_md) continue;
        }
        else if(ty == ct_val)
        {
            block_in(ect, str);
            if(t_type == ecb_md || t_type == cbc_md) continue;
        }

        if(t_type == ecb_md || t_type == cbc_md)
        {
            f_dec_key(alg, key, klen);              // set the key

            block_copy(act, ect, blen);             // encrypted text to low block

            if(t_type == cbc_md)                    // CBC Monte Carlo decryption
            {
                block_copy(act + blen, iv, blen);   // IV to high block

                for(i = 0; i < it_cnt; i += 2)      // do decryptions two at a time
                {
                    f_dec_blk(alg, act, ect);       // decrypt low block

                    block_xor(act + blen, ect, blen);   // xor into high block

                    f_dec_blk(alg, act + blen, ect);    // decrypt high block

                    block_xor(act, ect, blen);      // xor into low block
                }
            }
            else    // ECB Monte Carlo decryption
            {
                for(i = 0; i < it_cnt; ++i)

                    f_dec_blk(alg, act, act);
            }

            if(!block_cmp(pt, act, blen)) if(!e_cnt++) fe_cnt = test_cnt;

            if(t_type == ecb_md)    // test encryption if ECB mode
            {
                f_enc_key(alg, key, klen);  // set the key

                for(i = 0; i < it_cnt; ++i)

                    f_enc_blk(alg, act, act);

                if(!block_cmp(ect, act, blen)) 
                    
                    if(!e_cnt++) fe_cnt = test_cnt;
            }
        }
        else    // if(t_type == ecb_me || t_type == cbc_me || ecb_vk || ecb_vt)
        {
            f_enc_key(alg, key, klen);      // set the key

            if(t_type == cbc_me)                        // CBC Monte Carlo encryption
            {
                block_copy(act, iv, blen);
                block_copy(act + blen, pt, blen);       // copy IV and plaintext

                for(i = 0; i < it_cnt; i += 2)
                {
                    block_xor(act + blen, act, blen);   // xor low block into high block

                    f_enc_blk(alg, act + blen, act + blen); // encrypt high block

                    block_xor(act, act + blen, blen);   // xor high block into low block

                    f_enc_blk(alg, act, act);           // encrypt low block
                }
            }
            else    // ECB Monte Carlo encryption
            {
                block_copy(act, pt, blen);

                for(i = 0; i < it_cnt; ++i)

                    f_enc_blk(alg, act, act);
            }

            if(!block_cmp(ect, act, blen)) if(!e_cnt++) fe_cnt = test_cnt;

            if(t_type != cbc_me)    // if ECB mode test decrytpion
            {
                f_dec_key(alg, key, klen);  // set the key

                for(i = 0; i < it_cnt; ++i)

                    f_dec_blk(alg, act, act);

                if(!block_cmp(pt, act, blen)) if(!e_cnt++) fe_cnt = test_cnt;
            }
        }
    }

    inf.close();

    if(e_cnt > 0)   // report any errors
    {
        cout << e_cnt << " ERRORS during test (first on test " << fe_cnt << ")\n";
    }
    else            // else report all is well

        cout << "all tests correct\n";
}

void do_tests(const bool vkt, const bool vktn, const bool ecb, const bool cbc, 
              f_ctx *alg, const word blen, const word klen)
{   char    path[128], *sp;

    sp = copy_str(path, ref_path);

    if(vkt)
    {
        file_name(sp, 0, blen, klen); 
        ref_test(path, 1, ecb_vk, alg, blen, klen);
        file_name(sp, 1, blen, klen); 
        ref_test(path, 1, ecb_vt, alg, blen, klen);
    }

    if(vktn)
    {
        file_name(sp, 2, blen, klen); 
        ref_test(path, 1, ecb_nvk, alg, blen, klen);
        file_name(sp, 3, blen, klen); 
        ref_test(path, 1, ecb_nvt, alg, blen, klen);
    }

    if(ecb)
    {
        file_name(sp, 4, blen, klen); 
        ref_test(path, 10000, ecb_me, alg, blen, klen);
        file_name(sp, 5, blen, klen); 
        ref_test(path, 10000, ecb_md, alg, blen, klen);
    }

    if(cbc)
    {
        file_name(sp, 6, blen, klen); 
        ref_test(path, 10000, cbc_me, alg, blen, klen);
        file_name(sp, 7, blen, klen); 
        ref_test(path, 10000, cbc_md, alg, blen, klen);
    }
}

#ifdef  AES_DLL

#include "windows.h"

HINSTANCE init_dll(fn_ptrs& fn)
{   HINSTANCE   h_dll;

    if(!(h_dll = LoadLibrary(dll_path)))
    {
        std::cout << "\n\nDynamic link Library AES_DLL not found\n\n"; return 0;
    }

    fn.fn_blk_len = (g_blk_len*)GetProcAddress(h_dll, "_aes_blk_len@8");
    fn.fn_enc_key = (g_enc_key*)GetProcAddress(h_dll, "_aes_enc_key@12");
    fn.fn_dec_key = (g_dec_key*)GetProcAddress(h_dll, "_aes_dec_key@12");
    fn.fn_enc_blk = (g_enc_blk*)GetProcAddress(h_dll, "_aes_enc_blk@12");
    fn.fn_dec_blk = (g_dec_blk*)GetProcAddress(h_dll, "_aes_dec_blk@12");

#if !defined(BLOCK_SIZE)
    if(!fn.fn_enc_key || !fn.fn_dec_key || !fn.fn_enc_blk  || !fn.fn_dec_blk || !fn.fn_blk_len)
#else
    if(!fn.fn_enc_key || !fn.fn_dec_key || !fn.fn_enc_blk  || !fn.fn_dec_blk)
#endif
    {
        std::cout << "\n\nRequired DLL Entry Point(s) not found\n\n"; 
        FreeLibrary(h_dll); 
        return 0;
    }

    return h_dll;
}

#endif  // AES_DLL

int main(int argc, char *argv[])
{   bool        vkt, vktn, ecb, cbc, bf[5], kf[5];
    f_ctx   alg;

#if defined(AES_DLL)
    HINSTANCE   h_dll;

    if(!(h_dll = init_dll(fn))) return -1;
#endif

#if !defined(AES_IN_CPP)
    alg.n_blk = 0;
    alg.n_rnd = 0;
#endif

    if(argc == 1)
    {
        cout << "\nusage: aes_rav /t:[knec] /b:[45678] /k:[45678]";
        cout << "\n";
        cout << "\nwhere the symbols in square brackets can be used in";
        cout << "\nany combination (without the brackets) and have the";
        cout << "\nfollowing meanings:";
        cout << "\n";
        cout << "\n        /t:[knec]   selects which tests are used";
        cout << "\n        /b:[45678]  selects the block lengths used";
        cout << "\n        /k:[45678]  selects the key lengths used";
        cout << "\nwhere:";
        cout << "\n        k: generate ECB Known Answer Test files";
        cout << "\n        n: generate ECB Known Answer Test files (new)";
        cout << "\n        e: generate ECB Monte Carlo Test files";
        cout << "\n        c: generate CBC Monte Carlo Test files";
        cout << "\n";
        cout << "\nand the characters giving block and key lengths are";
        cout << "\ndigits representing the lengths in 32-bit units.\n\n";
        exit(0);
    }

    cout << "\nRun tests for the AES algorithm"
#if defined(AES_DLL)
     " (DLL Version)\n\n";
#else
    "\n\n";
#endif

    vkt  = test_args(argc, argv, 't', 'k');
    vktn = test_args(argc, argv, 't', 'n');
    ecb  = test_args(argc, argv, 't', 'e');
    cbc  = test_args(argc, argv, 't', 'c');

    kf[0] = test_args(argc, argv, 'k', '4');
    kf[1] = test_args(argc, argv, 'k', '5');
    kf[2] = test_args(argc, argv, 'k', '6');
    kf[3] = test_args(argc, argv, 'k', '7');
    kf[4] = test_args(argc, argv, 'k', '8');

    if(!(kf[0] || kf[1] || kf[2] || kf[3] || kf[4]))
    {
        kf[0] = kf[2] = kf[4] = true;       // AES key sizes if not specified
        kf[1] = kf[3] = false;
    }

#if !defined(BLOCK_SIZE)
    bf[0] = test_args(argc, argv, 'b', '4');
    bf[1] = test_args(argc, argv, 'b', '5');
    bf[2] = test_args(argc, argv, 'b', '6');
    bf[3] = test_args(argc, argv, 'b', '7');
    bf[4] = test_args(argc, argv, 'b', '8');

    if(!(bf[0] || bf[1] || bf[2] || bf[3] || bf[4]))
    {
        bf[0] = true;                   // AES block size if not specified
        bf[1] = bf[2] = bf[3] = bf[4] = false;
    }
#else
    bf[0] = bf[1] = bf[2] = bf[3] = bf[4] = false;
    bf[(BLOCK_SIZE - 16) / 4] = true;
#endif

    for(int bi = 0; bi < 5; ++bi) if(bf[bi])
    {
#if defined(AES_DLL)
            if(fn.fn_blk_len) f_blk_len(&alg, 16 + 4 * bi);
#elif !defined(BLOCK_SIZE)
            f_blk_len(&alg, 16 + 4 * bi);
#else
            if(16 + 4 * bi != BLOCK_SIZE) continue;
#endif
        for(int ki = 0; ki < 5; ++ki) if(kf[ki])
        {
            do_tests(vkt, vktn, ecb, cbc, &alg, 16 + 4 * bi, 16 + 4 * ki);
        }
    }

#if defined(AES_DLL)
    if(h_dll) FreeLibrary(h_dll);
#endif

    cout << "\n\n";
    return 0;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
午夜国产精品一区| 国产精品伦一区| 一区二区国产盗摄色噜噜| 99免费精品在线| 亚洲婷婷国产精品电影人久久| 成人高清免费观看| 夜夜嗨av一区二区三区中文字幕 | 图片区日韩欧美亚洲| 亚洲一区二区在线视频| 在线播放中文一区| 国产九色精品成人porny | 首页亚洲欧美制服丝腿| 欧美电视剧在线观看完整版| 国产麻豆精品久久一二三| 国产精品国产三级国产aⅴ无密码| 午夜天堂影视香蕉久久| 欧美激情在线免费观看| 国产精品久线观看视频| 国产日产精品一区| 欧美色偷偷大香| 欧美日韩亚洲综合在线| 欧美日韩一区二区三区四区五区| 欧美色图天堂网| 久久草av在线| 尤物在线观看一区| 久久精品欧美一区二区三区麻豆| 色吧成人激情小说| 狠狠久久亚洲欧美| 日韩和欧美一区二区三区| 久久精品二区亚洲w码| 成人综合日日夜夜| 精品系列免费在线观看| 日本欧美一区二区在线观看| 亚洲天天做日日做天天谢日日欢| 亚洲午夜久久久久中文字幕久| 久久久久久亚洲综合| 欧美一区二区三区啪啪| 欧美在线综合视频| 色视频成人在线观看免| 成人在线视频首页| 欧美日韩精品高清| 欧美自拍偷拍一区| 国产午夜亚洲精品不卡| 亚洲h在线观看| 午夜精品福利一区二区蜜股av| 国产美女精品一区二区三区| 91黄色激情网站| 久久久天堂av| 蜜臀av一区二区在线免费观看| 五月天亚洲婷婷| 91在线视频18| 91一区二区三区在线观看| www.视频一区| 久久亚洲一区二区三区四区| 日韩精品一区二区三区在线 | 人人精品人人爱| 天堂av在线一区| 91美女福利视频| 中文字幕免费观看一区| 日本成人中文字幕在线视频| 欧洲精品视频在线观看| 专区另类欧美日韩| 99精品视频一区二区| 欧美激情在线看| 国产成人免费视频精品含羞草妖精| 国产乱国产乱300精品| 欧美一区中文字幕| 亚洲福利视频三区| 欧美日韩卡一卡二| 亚洲成人综合在线| 色婷婷综合久久久中文一区二区| 亚洲欧美中日韩| 爽爽淫人综合网网站| 91色九色蝌蚪| 成人欧美一区二区三区| 国产精品香蕉一区二区三区| 欧美va亚洲va国产综合| 日韩欧美一区二区不卡| 亚欧色一区w666天堂| 欧美在线高清视频| 综合欧美一区二区三区| 成人手机在线视频| 国产精品污网站| 97精品电影院| 亚洲欧美另类小说视频| 精品伊人久久久久7777人| 337p日本欧洲亚洲大胆精品| 国产精品一区二区三区网站| 国产午夜久久久久| 99久久综合狠狠综合久久| 1024成人网| 日本韩国精品在线| 日本欧美一区二区在线观看| 日韩一区二区在线看片| 日韩美女久久久| 国产精品 欧美精品| 久久久99精品免费观看| 激情欧美一区二区| 国产精品美女久久久久高潮| 成人爱爱电影网址| **性色生活片久久毛片| 91亚洲国产成人精品一区二三| 亚洲狼人国产精品| 精品国产免费视频| 亚洲国产aⅴ成人精品无吗| 欧美一二三在线| 成人蜜臀av电影| 日本网站在线观看一区二区三区| xvideos.蜜桃一区二区| www.亚洲免费av| 亚洲国产精品尤物yw在线观看| 制服丝袜日韩国产| 国产欧美日韩精品a在线观看| 99re免费视频精品全部| 日本欧美加勒比视频| 久久精品人人爽人人爽| 丁香五精品蜜臀久久久久99网站| 91精品国产一区二区三区蜜臀 | 亚洲视频一二区| 日韩一二三区视频| 91美女福利视频| 国产成人综合自拍| 奇米亚洲午夜久久精品| 亚洲精品一二三四区| 国产欧美一区二区在线观看| 在线成人av网站| 欧美吻胸吃奶大尺度电影 | 久久精品国产秦先生| 亚洲日本va午夜在线电影| 精品国内二区三区| 欧美日韩免费在线视频| 韩国欧美国产1区| 亚洲国产精品一区二区久久恐怖片 | 五月天中文字幕一区二区| 欧美国产成人精品| 久久久国产精品午夜一区ai换脸| 欧美人牲a欧美精品| 91精品1区2区| 色噜噜狠狠色综合中国| 久久精工是国产品牌吗| 日韩专区一卡二卡| 亚洲免费在线视频一区 二区| 久久久综合精品| 欧美mv日韩mv国产网站app| 欧美另类z0zxhd电影| 在线亚洲精品福利网址导航| 国产二区国产一区在线观看| 精品夜夜嗨av一区二区三区| 日韩成人免费电影| 日欧美一区二区| 天天综合日日夜夜精品| 一区二区三区免费| 亚洲电影一区二区| 午夜精品成人在线视频| 日韩成人dvd| 久久黄色级2电影| 国产美女视频一区| 国产精品996| 国产91在线看| 99久久综合狠狠综合久久| 99久久免费国产| 91久久久免费一区二区| 欧美在线免费播放| 欧美精品乱码久久久久久| 色天使久久综合网天天| 欧美日韩一区高清| 欧美电视剧在线看免费| 久久综合九色综合欧美98| 国产色婷婷亚洲99精品小说| 久久亚洲精品小早川怜子| 欧美精品一区二区三区蜜臀| 精品国产百合女同互慰| 日本一区二区三区在线观看| 亚洲欧美影音先锋| 天堂蜜桃一区二区三区 | 狠狠v欧美v日韩v亚洲ⅴ| 岛国av在线一区| 欧美色中文字幕| 久久久久久免费| 亚洲激情校园春色| 狠狠色综合日日| 99精品国产视频| 日韩女优av电影在线观看| 亚洲欧美自拍偷拍| 婷婷国产v国产偷v亚洲高清| 亚洲成a人v欧美综合天堂下载| 久久91精品久久久久久秒播| 国产福利一区二区| 欧美卡1卡2卡| 亚洲视频狠狠干| 国模娜娜一区二区三区| 色哦色哦哦色天天综合| 精品va天堂亚洲国产| 亚洲一区二区三区激情| 国产91精品在线观看| 欧美乱妇15p| 亚洲男人的天堂在线aⅴ视频| 国产精品一卡二| 日韩一级欧美一级| 亚洲午夜一区二区|