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

天下

記錄修行的印記

單文件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>
            欧美不卡一区| 另类天堂av| 久久亚洲综合色一区二区三区| 亚洲免费在线观看| 欧美一区二区三区日韩视频| 欧美淫片网站| 免费在线看成人av| 亚洲第一主播视频| 日韩视频在线你懂得| 亚洲自拍偷拍网址| 久久人人爽人人爽爽久久| 你懂的成人av| 国产精品jvid在线观看蜜臀| 国产日韩精品一区观看 | 久久精品视频在线观看| 免费在线亚洲欧美| 欧美性生交xxxxx久久久| 国产一区二区欧美日韩| 亚洲九九九在线观看| 午夜精品剧场| 欧美激情综合| 亚洲欧美日韩综合aⅴ视频| 久久精品国产99国产精品澳门| 欧美成人精品在线| 国产免费成人av| 亚洲美女av在线播放| 欧美伊久线香蕉线新在线| 欧美福利视频一区| 亚洲综合清纯丝袜自拍| 欧美成人资源网| 国产午夜精品一区理论片飘花| 亚洲美女免费精品视频在线观看| 久久成人精品一区二区三区| 亚洲欧洲精品一区二区三区波多野1战4 | 欧美激情一区二区在线 | 亚洲精品免费在线| 宅男精品视频| 蜜桃av噜噜一区二区三区| 国产精品区一区二区三区| 亚洲国产日韩在线| 久久福利资源站| 夜夜嗨av色一区二区不卡| 久久久久久999| 国产一区二区三区在线观看精品| 亚洲视频中文字幕| 亚洲日本黄色| 欧美久久99| 日韩午夜中文字幕| 亚洲国产cao| 欧美电影免费观看网站| 亚洲国产小视频在线观看| 鲁鲁狠狠狠7777一区二区| 性欧美1819sex性高清| 国产精品日韩电影| 久久高清免费观看| 欧美在线视频一区二区三区| 国产精品日韩久久久| 亚洲在线中文字幕| 亚洲性色视频| 国产欧美日韩综合| 久久激情网站| 欧美在线观看一区| 国产一级一区二区| 久久人人97超碰人人澡爱香蕉| 欧美亚洲视频在线观看| 国产日韩欧美三区| 久久一日本道色综合久久| 久久理论片午夜琪琪电影网| 亚洲成色www8888| 欧美护士18xxxxhd| 久久亚洲精选| 久久在线视频| 亚洲最新视频在线播放| 这里只有精品电影| 国产私拍一区| 欧美韩日一区| 国产精品福利久久久| 久久电影一区| 免费久久99精品国产自在现线| 日韩一级黄色大片| 亚洲香蕉成视频在线观看| 国产深夜精品福利| 亚洲大胆人体在线| 欧美性淫爽ww久久久久无| 久久久久久网站| 欧美黑人在线播放| 久久国内精品自在自线400部| 久久婷婷国产麻豆91天堂| 一区二区精品在线| 久久爱91午夜羞羞| 在线综合亚洲欧美在线视频| 欧美影院在线播放| 9色porny自拍视频一区二区| 欧美一区二区三区喷汁尤物| 亚洲精品网址在线观看| 亚洲欧美高清| 亚洲欧洲精品一区二区精品久久久| 免费看亚洲片| 亚洲欧美日韩成人| 鲁大师影院一区二区三区| 亚洲欧美激情一区二区| 久久永久免费| 午夜精品视频在线| 欧美激情四色 | 亚洲欧洲精品一区二区三区波多野1战4| 亚洲人成网在线播放| 国产一区二区三区日韩欧美| 亚洲欧洲一区| **性色生活片久久毛片| 亚洲婷婷在线| 日韩午夜av在线| 欧美一区激情视频在线观看| 一区二区国产精品| 久久综合九色综合欧美狠狠| 亚洲欧美日韩国产一区二区三区| 牛牛国产精品| 欧美gay视频激情| 国产亚洲一区在线播放| 亚洲一区二区三区久久| 夜夜爽99久久国产综合精品女不卡 | 久久精品国产久精国产思思| 亚洲一区二区三区在线看| 蜜桃av综合| 久久综合九色综合久99| 国产日产高清欧美一区二区三区| 一本久久精品一区二区| aa级大片欧美三级| 欧美精品入口| 亚洲三级视频| 亚洲免费精品| 欧美高清你懂得| 亚洲国产经典视频| 亚洲高清视频一区| 久久婷婷国产综合国色天香| 久久手机精品视频| 黄色成人av| 久久一区免费| 欧美国产丝袜视频| 亚洲精品免费看| 欧美区二区三区| 亚洲理论电影网| 亚洲午夜91| 国产精品一区在线观看你懂的| 亚洲影院免费观看| 久久精品日韩欧美| 亚洲男人的天堂在线aⅴ视频| 欧美日韩国产一中文字不卡| 一区二区国产精品| 91久久中文| 亚洲伦理中文字幕| 欧美人体xx| 亚洲一区二区三区四区视频| 午夜国产精品视频| 国产婷婷色一区二区三区在线| 西西裸体人体做爰大胆久久久| 久久精品一区四区| 亚洲第一区中文99精品| 美日韩精品视频| 午夜一区不卡| 欧美极品aⅴ影院| aaa亚洲精品一二三区| 欧美一区二区精品在线| 黄色亚洲在线| 欧美日本三区| 先锋影音久久| 欧美激情偷拍| 午夜天堂精品久久久久 | 欧美承认网站| 亚洲线精品一区二区三区八戒| 久久久久久久综合狠狠综合| 亚洲激情一区二区| 国产精品久久99| 欧美亚洲综合另类| 在线观看国产精品淫| 欧美日韩精品在线播放| 欧美一区二区视频在线观看2020 | 久久久噜噜噜久久中文字幕色伊伊| 在线精品福利| 国产精品美女久久久浪潮软件| 久久久久国色av免费看影院 | 亚洲欧美日韩中文在线制服| 欧美xxx成人| 久久精品导航| 亚洲一区二区三区中文字幕| 永久91嫩草亚洲精品人人| 国产精品av一区二区| 欧美激情一二区| 久久人人爽爽爽人久久久| 亚洲欧美在线一区二区| 亚洲精品国精品久久99热一| 久久久一区二区| 亚洲欧美国产日韩中文字幕| 亚洲精品久久久一区二区三区| 国产午夜精品视频免费不卡69堂| 欧美三级电影大全| 欧美美女喷水视频| 欧美电影美腿模特1979在线看| 久久高清国产| 欧美一区=区| 亚洲欧美国产va在线影院|