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

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

?? aesaux.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
*/

#include "aesaux.h"

char *st[8] = { "vk", "vt", "nk", "nt", "me", "md", "me", "md" };

char *file_name(char* buf, const word type, const word blen, const word klen)
{
    std::strstream  sout(buf, 128);

    sout << (type < 6 ? "ecb" : "cbc") << st[type] 
         << static_cast<char>('0' + blen / 4)
         << static_cast<char>('0' + klen / 4) << ".txt";

    buf[sout.pcount()] = '\0';

    return buf;
}

const char *pos(const char *s)
{
    while(*s++ != '=') ;
    while(*s++ == ' ') ;
    return s - 1;
}

// Strings to locate lines in test vector files

const char    *fstr[NO_LTYPES] = 
        { BADL_STR, BLEN_STR, KLEN_STR, TEST_STR, IV_STR, KEY_STR, PT_STR, CT_STR };

char    *hxx = "0123456789abcdef";

// Hexadecimal conversion from hex character to a number in range 0 <= no <= 15

inline int to_hex(int ch)
{
    return (ch & 15) + (ch >= '0' && ch <= '9' ? 0 : 9);
}

bool get_line(std::ifstream& inf, char s[])
{
    if(inf.eof()) return false;
    
    inf.getline(s, 100); 
    
    return true;
}

char *copy_str(char *s, const char *fstr)
{   const char *p = fstr;

    while(*p)

        *s++ = *p++;

    *s = '\0'; return s;
}

// Read from a string of hexadecimal digits into an array of 8-bit bytes
// Each pair of hexadecimal digits is used to compile one 8-bit byte and
// the first (last) digit forms the most (least) significant four bits
// of each byte. The hexadecimal digits are read from left (low) to right
// (high) and are placed in increasing index positions in the byte array

int block_in(byte l[], const char *p)
{   int i = 0;

    p = pos(p);

    while(*p && *(p + 1) && isxdigit(*p) && isxdigit(*(p + 1)))
    {
        l[i++] = (to_hex(*p) << 4) + to_hex(*(p + 1)); p += 2;
    }

    return i;
}

// clears an array of 8-bit bytes

void block_clear(byte l[], const word len)
{   byte *lp = l;

    while(lp < l + len)

        *lp++ = 0;
}

// reverses the order of an array of 8-bit bytes

void block_reverse(byte l[], const word len)
{    byte  *blo = l, *bhi = l + len - 1, by;

    while(blo < bhi)

        by = *blo, *blo++ = *bhi, *bhi-- = by;
}

// copies an array of 8-bit bytes (non overlapping)

void block_copy(byte l[], const byte r[], const word len)
{   byte          *lp = l;
    const byte    *rp = r;

    while(lp < l + len)

        *lp++ = *rp++;
}

// xors one array of 8-bit bytes with another

void block_xor(byte l[], const byte r[], const word len)
{   byte          *lp = l;
    const byte    *rp = r;

    while(lp < l + len)

        *lp++ ^= *rp++;
}

// compares two arrays of 8-bit bytes and return true if the same or
// false otherwise

bool block_cmp(const byte l[], const byte r[], const word len)
{   const byte    *lp = l, *rp = r;

    while(lp < l + len)

        if(*lp++ != *rp++)

            return false;

    return true;
}

word rand32(void)
{   static word   r4,r_cnt = (word)-1, w = 521288629, z = 362436069;

    z = 36969 * (z & 65535) + (z >> 16);
    w = 18000 * (w & 65535) + (w >> 16);

    r_cnt = 0; r4 = (z << 16) + w; return r4;
}

byte rand8(void)
{   static word   r4,r_cnt = 4;

    if(r_cnt == 4)
    {
        r4 = rand32(); r_cnt = 0;
    }

    return (char)(r4 >> (8 * r_cnt++));
}

// fill a block with random charactrers

void block_rndfill(byte l[], word len)
{   word  i;

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

        l[i] = rand8();
}

// Convert decimal number to a character string

void put_dec(char *s, word val)
{   char    *p = s, *q = s, ch;

    do
    {
        *p++ = (char)('0' + (val % 10)); val /= 10;
    }
    while
        (val);

    *p-- = '\0';

    while(p > q)
    {
        ch = *p, *p-- = *q, *q++ = ch;
    }
}

// Extract decimal number from a character string

word get_dec(const char *s)
{   const char  *p = pos(s);
    word        nbr = 0;

    while(*p && *p >= '0' && *p <= '9')
    {
        nbr = 10 * nbr + (*p - '0'); ++p;
    }

    return nbr;
}

// Compare two strings ignoring case

int cmp_nocase(const char *s1, const char *s2)
{   const char  *p1 = pos(s1), *p2 = pos(s2);

    while(*p1 && *p2)
    {
        if(toupper(*p1) != toupper(*p2))
        {
            return (toupper(*p1) < toupper(*p2) ? -1 : 1);
        }

        ++p1; ++p2;
    }

    while(*p1) p1++; while(*p2) p2++;

    return (p2 - s2) - (p1 - s1);
}

// Input command line arguments

bool test_args(int argc, char *argv[], char des_chr, char tst_chr)
{
    for(int i = 1; i < argc; ++i)
    {
        if(argv[i][0] != '-' && argv[i][0] != '/')

            continue;

        if(argv[i][1] != tolower(des_chr) && argv[i][1] != toupper(des_chr))

            continue;

        else if(!tst_chr)

            return true;

        if(argv[i][2] != ':')

            continue;

        for(word j = 3; argv[i][j]; ++j)

            if(argv[i][j] == tolower(tst_chr) || argv[i][j] == toupper(tst_chr))

                return true;
    }

    return false;
}

// Find a given string s2 in s1

int find_string(const char *s1, const char s2[])
{   const char  *p1 = s1, *q1, *q2;

    while(*p1)
    {
        q1 = p1; q2 = s2;

        while(*q1 && *q2 && *q1 == *q2)
        {
            q1++; q2++;
        }

        if(!*q2)

            return p1 - s1;

        p1++;
    }

    return -1;
}

// Find a line with a given header and return line type
// or -1 if end of file

line_type find_line(std::ifstream& inf, char str[])
{
    while(get_line(inf, str))               // input a line
    {
        for(word i = 1; i < NO_LTYPES; ++i)  // compare line header
        {
            if(find_string(str, fstr[i]) >= 0)
            {
                return static_cast<line_type>(i);     
            }
        }
    }

    return bad_line;            // end of file
}

// Output an array of bytes to a string of hexadecimal digits using
// the conventions described for input above.  But if type (ty) = 1
// it outputs a test number in decimal notation

void block_out(const line_type ty, const byte b[], std::ofstream& outf, const word len)
{
    outf << '\n' << fstr[ty];

    if(ty <= test_no)
    {
        outf << len;
    }
    else

        for(word i = 0; i < len; ++i)
        {
            outf << hxx[(b[i] >> 4) & 15] << hxx[b[i] & 15];
        }
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美一区二区福利在线| 欧美三级在线看| 亚洲午夜三级在线| 日韩欧美一区在线| 99精品视频中文字幕| 奇米影视在线99精品| 亚洲免费色视频| 久久免费美女视频| 精品视频1区2区3区| 成人免费的视频| 久久99国产精品麻豆| 亚洲五码中文字幕| 国产精品乱码一区二三区小蝌蚪| 日韩一区二区视频| 色婷婷香蕉在线一区二区| 国产成人午夜片在线观看高清观看| 日韩成人免费看| 亚洲激情图片一区| 国产精品―色哟哟| 精品理论电影在线观看| 欧美久久久久久久久中文字幕| 日本道精品一区二区三区| 国产91露脸合集magnet| 久久草av在线| 蜜桃视频一区二区三区在线观看| 亚洲午夜电影网| 亚洲精品欧美专区| 1区2区3区精品视频| 国产拍揄自揄精品视频麻豆| 精品国产露脸精彩对白| 日韩一级二级三级精品视频| 51精品秘密在线观看| 欧美三区免费完整视频在线观看| 91久久国产最好的精华液| 成人午夜电影久久影院| 国产精品一区二区在线观看不卡 | 欧美主播一区二区三区| 成人精品视频一区二区三区尤物| 国产精品亚洲视频| 福利电影一区二区三区| 国产成人精品影视| 国产成人精品一区二区三区网站观看| 激情图区综合网| 国产真实乱子伦精品视频| 激情综合网av| 国产激情偷乱视频一区二区三区| 韩国一区二区在线观看| 国产一区二区在线看| 国产在线精品国自产拍免费| 国产成人精品亚洲777人妖| 国产高清成人在线| 本田岬高潮一区二区三区| 99精品视频一区| 99麻豆久久久国产精品免费| 色综合天天在线| 免费久久精品视频| 欧美电视剧在线看免费| 精品国产1区二区| 欧美成人精品福利| 久久在线观看免费| 中文字幕第一页久久| 一色屋精品亚洲香蕉网站| 夜夜嗨av一区二区三区网页| 污片在线观看一区二区| 男人操女人的视频在线观看欧美| 国产精品一区二区男女羞羞无遮挡 | 欧美色大人视频| 欧美一区二区二区| 久久久久久久久久美女| 亚洲免费大片在线观看| 爽好久久久欧美精品| 国产精品一区二区在线播放| 91久久奴性调教| 日韩久久精品一区| 国产精品乱码人人做人人爱| 亚洲国产日韩精品| 国模少妇一区二区三区| 99精品热视频| 日韩精品一区二区在线观看| 国产精品私人影院| 无码av中文一区二区三区桃花岛| 国产激情一区二区三区桃花岛亚洲| 在线精品国精品国产尤物884a| 欧美精品色综合| 国产精品欧美极品| 日韩精品一级二级| 9i在线看片成人免费| 欧美一区二区三区在线看| 欧美激情一区二区三区蜜桃视频| 婷婷成人激情在线网| 成人自拍视频在线| 3d成人动漫网站| 亚洲三级久久久| 国产一区二区视频在线| 91九色最新地址| 国产日产欧美一区二区三区| 免费国产亚洲视频| 91免费国产在线观看| 欧美精品一区二区三区久久久| 亚洲一区在线电影| 不卡的看片网站| 精品国产91亚洲一区二区三区婷婷 | 蜜臀av国产精品久久久久| 色综合久久88色综合天天| 久久先锋影音av鲁色资源网| 午夜精品久久久久| 91在线高清观看| 中文字幕av一区二区三区高| 久久99久久99| 欧美精品v国产精品v日韩精品| 自拍av一区二区三区| 国产精品一级片在线观看| 8x福利精品第一导航| 一区二区三区中文字幕电影| eeuss鲁片一区二区三区 | 欧美精品一区二| 日韩av一区二区三区四区| 91电影在线观看| 亚洲视频在线观看三级| 成人性色生活片| 久久久精品欧美丰满| 久久成人精品无人区| 欧美一卡2卡3卡4卡| 天天综合色天天| 欧美日韩国产天堂| 亚洲影院久久精品| 欧洲精品中文字幕| 一区二区三区日韩欧美精品| 色婷婷av一区| 亚洲柠檬福利资源导航| 99久久久精品| 亚洲三级在线看| 91麻豆文化传媒在线观看| 亚洲人成影院在线观看| 91在线观看污| 亚洲精品网站在线观看| 99视频在线精品| 一区二区三区在线视频播放| 欧美性生活久久| 性做久久久久久| 欧美久久久久免费| 免费看精品久久片| 精品电影一区二区| 国产精品一二三四| 中文字幕国产一区| 成人av手机在线观看| 最新中文字幕一区二区三区| 在线视频亚洲一区| 亚洲一级二级在线| 欧美日本一道本| 久久99国产精品免费网站| 久久精品日产第一区二区三区高清版| 国产精品一色哟哟哟| 中文字幕中文字幕中文字幕亚洲无线| 91女神在线视频| 香蕉成人啪国产精品视频综合网| 日韩午夜精品电影| 国产精品18久久久久久久久| 中文字幕亚洲视频| 欧美日韩国产欧美日美国产精品| 美女网站一区二区| 国产日本一区二区| 一本到一区二区三区| 日韩二区在线观看| 国产欧美日韩久久| 91激情在线视频| 久久se这里有精品| 中文字幕成人网| 欧美乱妇20p| 国产二区国产一区在线观看| 亚洲一区欧美一区| 日韩精品在线网站| 91在线视频免费观看| 日韩影院免费视频| 国产亚洲美州欧州综合国 | 2020国产成人综合网| 99精品国产视频| 日韩国产一二三区| 国产精品丝袜在线| 欧美日本一道本| 成人av在线网站| 蜜桃av一区二区三区电影| 国产精品天美传媒沈樵| 91精品国产综合久久精品图片 | 欧美一级黄色录像| 国产v日产∨综合v精品视频| 亚洲成人第一页| 中文字幕不卡在线观看| 欧美一区二区三区四区五区| 99精品国产一区二区三区不卡| 麻豆精品新av中文字幕| 亚洲女人****多毛耸耸8| 精品国产乱码久久久久久图片| 日本久久一区二区| 国产精品自在在线| 亚洲午夜电影在线| 亚洲欧洲另类国产综合| 精品国产99国产精品| 欧美日韩二区三区| 91老师国产黑色丝袜在线|