青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

天下

記錄修行的印記

單文件AES加解密算法

#pragma once   #include   //for int8_t #include   //for memcmp #include  //for intrinsics for AES-NI //compile using gcc and following arguments: -g;-O0;-Wall;-msse2;-msse;-march=native;-maes //internal stuff   //macros #define DO_ENC_BLOCK(m,k) \     do{\      m = _mm_xor_si128  (m, k[ 0]); \      m = _mm_aesenc_si128 (m, k[ 1]); \      m = _mm_aesenc_si128 (m, k[ 2]); \      m = _mm_aesenc_si128 (m, k[ 3]); \      m = _mm_aesenc_si128 (m, k[ 4]); \      m = _mm_aesenc_si128 (m, k[ 5]); \      m = _mm_aesenc_si128 (m, k[ 6]); \      m = _mm_aesenc_si128 (m, k[ 7]); \      m = _mm_aesenc_si128 (m, k[ 8]); \      m = _mm_aesenc_si128 (m, k[ 9]); \      m = _mm_aesenclast_si128(m, k[10]);\     }while(0)   #define DO_DEC_BLOCK(m,k) \     do{\      m = _mm_xor_si128  (m, k[10+0]); \      m = _mm_aesdec_si128 (m, k[10+1]); \      m = _mm_aesdec_si128 (m, k[10+2]); \      m = _mm_aesdec_si128 (m, k[10+3]); \      m = _mm_aesdec_si128 (m, k[10+4]); \      m = _mm_aesdec_si128 (m, k[10+5]); \      m = _mm_aesdec_si128 (m, k[10+6]); \      m = _mm_aesdec_si128 (m, k[10+7]); \      m = _mm_aesdec_si128 (m, k[10+8]); \      m = _mm_aesdec_si128 (m, k[10+9]); \      m = _mm_aesdeclast_si128(m, k[0]);\     }while(0)   #define AES_128_key_exp(k, rcon) aes_128_key_expansion(k, _mm_aeskeygenassist_si128(k, rcon))   static __m128i aes_128_key_expansion(__m128i key, __m128i keygened) {     keygened = _mm_shuffle_epi32(keygened, _MM_SHUFFLE(3,3,3,3));     key = _mm_xor_si128(key, _mm_slli_si128(key, 4));     key = _mm_xor_si128(key, _mm_slli_si128(key, 4));     key = _mm_xor_si128(key, _mm_slli_si128(key, 4));     return _mm_xor_si128(key, keygened); }   //public API static void aes128_load_key_enc_only(uint8_t *enc_key, __m128i *key_schedule) {     key_schedule[0] = _mm_loadu_si128((const __m128i*) enc_key);     key_schedule[1] = AES_128_key_exp(key_schedule[0], 0x01);     key_schedule[2] = AES_128_key_exp(key_schedule[1], 0x02);     key_schedule[3] = AES_128_key_exp(key_schedule[2], 0x04);     key_schedule[4] = AES_128_key_exp(key_schedule[3], 0x08);     key_schedule[5] = AES_128_key_exp(key_schedule[4], 0x10);     key_schedule[6] = AES_128_key_exp(key_schedule[5], 0x20);     key_schedule[7] = AES_128_key_exp(key_schedule[6], 0x40);     key_schedule[8] = AES_128_key_exp(key_schedule[7], 0x80);     key_schedule[9] = AES_128_key_exp(key_schedule[8], 0x1B);     key_schedule[10] = AES_128_key_exp(key_schedule[9], 0x36); }   static void aes128_load_key(uint8_t *enc_key, __m128i *key_schedule) {     aes128_load_key_enc_only(enc_key, key_schedule);       // generate decryption keys in reverse order.     // k[10] is shared by last encryption and first decryption rounds     // k[0] is shared by first encryption round and last decryption round (and is the original user key)     // For some implementation reasons, decryption key schedule is NOT the encryption key schedule in reverse order     key_schedule[11] = _mm_aesimc_si128(key_schedule[9]);     key_schedule[12] = _mm_aesimc_si128(key_schedule[8]);     key_schedule[13] = _mm_aesimc_si128(key_schedule[7]);     key_schedule[14] = _mm_aesimc_si128(key_schedule[6]);     key_schedule[15] = _mm_aesimc_si128(key_schedule[5]);     key_schedule[16] = _mm_aesimc_si128(key_schedule[4]);     key_schedule[17] = _mm_aesimc_si128(key_schedule[3]);     key_schedule[18] = _mm_aesimc_si128(key_schedule[2]);     key_schedule[19] = _mm_aesimc_si128(key_schedule[1]); }   static void aes128_enc(__m128i *key_schedule, uint8_t *plainText,uint8_t *cipherText) {     __m128i m = _mm_loadu_si128((__m128i *) plainText);     DO_ENC_BLOCK(m,key_schedule);     _mm_storeu_si128((__m128i *) cipherText, m); }   static void aes128_dec(__m128i *key_schedule, uint8_t *cipherText,uint8_t *plainText) {     __m128i m = _mm_loadu_si128((__m128i *) cipherText);     DO_DEC_BLOCK(m,key_schedule);     _mm_storeu_si128((__m128i *) plainText, m); }   //return 0 if no error //1 if encryption failed //2 if decryption failed //3 if both failed static int aes128_self_test(void) {     uint8_t plain[]  = {0x32, 0x43, 0xf6, 0xa8, 0x88, 0x5a, 0x30, 0x8d, 0x31, 0x31, 0x98, 0xa2, 0xe0, 0x37, 0x07, 0x34};     uint8_t enc_key[] = {0x2b, 0x7e, 0x15, 0x16, 0x28, 0xae, 0xd2, 0xa6, 0xab, 0xf7, 0x15, 0x88, 0x09, 0xcf, 0x4f, 0x3c};     uint8_t cipher[]  = {0x39, 0x25, 0x84, 0x1d, 0x02, 0xdc, 0x09, 0xfb, 0xdc, 0x11, 0x85, 0x97, 0x19, 0x6a, 0x0b, 0x32};     uint8_t computed_cipher[16];     uint8_t computed_plain[16];     int out=0;     __m128i key_schedule[20];     aes128_load_key(enc_key,key_schedule);     aes128_enc(key_schedule,plain,computed_cipher);     aes128_dec(key_schedule,cipher,computed_plain);     if(memcmp(cipher,computed_cipher,sizeof(cipher))) out=1;     if(memcmp(plain,computed_plain,sizeof(plain))) out|=2;     return out; }

posted on 2021-08-30 21:39 天下 閱讀(409) 評(píng)論(0)  編輯 收藏 引用 所屬分類: 加密解密

<2013年8月>
28293031123
45678910
11121314151617
18192021222324
25262728293031
1234567

導(dǎo)航

統(tǒng)計(jì)

常用鏈接

留言簿(4)

隨筆分類(378)

隨筆檔案(329)

鏈接

最新隨筆

搜索

最新評(píng)論

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            国产一区91| 国产精品国产精品国产专区不蜜| 国产一区成人| 美女91精品| 国产午夜精品在线观看| 久久久久中文| 久久在线免费| 一本大道久久精品懂色aⅴ| 亚洲精品视频一区二区三区| 国产精品影视天天线| 麻豆精品精华液| 欧美另类高清视频在线| 午夜天堂精品久久久久| 久久裸体视频| 亚洲视频在线观看网站| 欧美一区二区视频在线观看| 亚洲精品一区二区网址| 亚洲视频图片小说| 在线播放视频一区| 一区二区三区国产在线| 亚洲国产精品va在线看黑人动漫| 亚洲免费观看| 在线电影欧美日韩一区二区私密| 亚洲精品欧美日韩专区| 国外成人在线视频网站| 99综合在线| 亚洲国产成人在线播放| 亚洲在线免费视频| 亚洲精品久久久久久久久久久久久| 亚洲一区亚洲| 夜夜躁日日躁狠狠久久88av| 欧美一区二区三区免费观看 | 亚洲综合精品四区| 亚洲欧洲日本mm| 欧美一区二区三区免费看| 9色国产精品| 免费毛片一区二区三区久久久| 欧美亚洲免费在线| 欧美日本在线视频| 欧美aⅴ99久久黑人专区| 国产精品亚洲成人| 9i看片成人免费高清| 亚洲韩国一区二区三区| 欧美一区午夜视频在线观看| 亚洲中无吗在线| 欧美日韩999| 亚洲国内高清视频| 韩国三级电影久久久久久| 亚洲欧美国产制服动漫| 亚洲一区制服诱惑| 欧美视频官网| 99国产一区| 亚洲午夜视频在线| 欧美日韩成人综合在线一区二区 | 亚洲福利专区| 亚洲国产精品va在看黑人| 久久久久久久久蜜桃| 久久久精品国产免大香伊| 国产精品丝袜白浆摸在线| 中文一区二区| 欧美一区影院| 国产一区二区精品| 欧美在线短视频| 久久人人精品| 亚洲成色777777女色窝| 久久久99国产精品免费| 欧美99久久| 亚洲精品国久久99热| 亚洲成色www8888| 免费成人av| 亚洲激情网址| 99精品视频免费观看| 欧美午夜精品电影| 先锋资源久久| 女人色偷偷aa久久天堂| 亚洲精品极品| 国产精品视频免费| 欧美在线视频全部完| 欧美成人综合网站| 亚洲视频免费在线| 国产精品色婷婷| 久久精品国产综合精品| 亚洲国产综合视频在线观看| 亚洲一区亚洲| 激情久久一区| 欧美精品一区二| 午夜久久久久| 亚洲国产精品免费| 欧美一级网站| 91久久精品日日躁夜夜躁欧美| 欧美日韩一级黄| 久久本道综合色狠狠五月| 亚洲激情国产精品| 久久精品亚洲精品| 亚洲毛片av| 国产在线高清精品| 欧美日韩国产成人在线免费| 性做久久久久久| 亚洲精品一区二区在线| 久久中文字幕一区| 亚洲午夜在线| 亚洲国产人成综合网站| 国产精品久久久久久久一区探花 | 欧美日韩一区高清| 久久亚洲春色中文字幕久久久| 亚洲伦理精品| 欧美成人综合在线| 久久大逼视频| 亚洲一区在线视频| 亚洲精品人人| 在线精品国产欧美| 国产欧美一二三区| 国产精品magnet| 欧美激情一区二区| 久久中文欧美| 欧美一区在线视频| 亚洲一区二区欧美| 正在播放亚洲| 亚洲区中文字幕| 欧美成人精精品一区二区频| 久久精品国产v日韩v亚洲| 亚洲一区二区三区高清不卡| 亚洲日本一区二区三区| 尤物视频一区二区| 黄色国产精品| 国产在线视频欧美| 国内精品久久久久影院 日本资源| 欧美调教vk| 欧美性大战xxxxx久久久| 欧美国产日韩一区二区| 欧美大胆人体视频| 欧美国产亚洲另类动漫| 免费看成人av| 免费在线成人| 另类人畜视频在线| 久久一区中文字幕| 久久综合久久久| 六月婷婷一区| 欧美激情综合亚洲一二区 | 激情久久影院| 国产欧美一区二区色老头| 国产精品老女人精品视频| 欧美午夜不卡| 国产噜噜噜噜噜久久久久久久久| 欧美性大战久久久久久久蜜臀| 欧美午夜无遮挡| 国产精品久久久久免费a∨大胸| 国产精品不卡在线| 国产欧美精品国产国产专区| 国产区在线观看成人精品| 国精产品99永久一区一区| 狠狠v欧美v日韩v亚洲ⅴ| 亚洲成人直播| 夜夜爽av福利精品导航 | 香蕉免费一区二区三区在线观看 | 日韩午夜av在线| 亚洲一区二区三区精品动漫| 午夜日韩电影| 久久久久久网站| 欧美国产一区二区在线观看| 亚洲精品乱码久久久久久黑人 | 亚洲深夜福利在线| 欧美一区二视频| 欧美大片专区| 国产精品九九久久久久久久| 国产一级一区二区| 亚洲精品日韩在线观看| 午夜精品亚洲| 欧美顶级大胆免费视频| 中文在线资源观看网站视频免费不卡 | 久久亚洲精品视频| 亚洲韩国一区二区三区| 亚洲一区二区三区影院| 久久五月天婷婷| 国产精品二区影院| 精品成人一区二区三区四区| 一区二区av| 麻豆精品视频在线观看视频| 亚洲美女黄色| 久久久亚洲国产天美传媒修理工| 欧美激情区在线播放| 国产亚洲精品久久久久动| 一区二区三区四区五区在线| 久久精品亚洲精品| 日韩午夜电影av| 久久亚洲欧洲| 国产视频精品xxxx| 亚洲色无码播放| 欧美国产精品v| 欧美影院一区| 欧美新色视频| 日韩视频一区二区三区在线播放免费观看 | 亚洲一区二区视频在线观看| 开心色5月久久精品| 亚洲小视频在线| 欧美日本在线一区| 亚洲精品美女免费| 欧美成人69av| 久久蜜桃精品| 激情五月综合色婷婷一区二区|