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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? kblock.cpp

?? 加密解密,安全工具!很有意思的代碼
?? CPP
?? 第 1 頁 / 共 4 頁
字號:
    }    if ( !kbFound ) return FALSE;    // Empty key block is already filled in by random data.    // We'll create digest for the data and encrypt it using the Key    if ( !CalculateDigest( kbFound->verifyBytes, VERIFY_BYTES_LENGTH, kbFound->digest ) )        return FALSE;    memset( PoolBuffer, 0, POOL_SIZE_BYTES );    memset( iVector,    0, IVECTOR_LENGTH );     /* Load the Key to encryption algorithm module */    if ( alg_make_key( Alg, Key, AlgKeyLength, PoolBuffer, &keyHandle ) )        return FALSE;    /* Encrypt 'verify data' and 'digest' */    if ( alg_encrypt(    Alg, keyHandle, iVector,                          kbFound->verifyBytes, VERIFY_BYTES_LENGTH + MAXIMUM_DIGEST_SIZE_BYTES ) )    {        alg_free_key( Alg, keyHandle );        return FALSE;    }    /* Erase and free the Key data from the encryption algorithm module */    alg_free_key( Alg, keyHandle );    setAttribute( &(kbFound->keyAttribute), KATTRIBUTE_ALTERNATIVE_BLOCK );    return TRUE;}/**** Procedures for creating and opening Hidden part of container ****//********************************************************************** *  * DataBlockWriteKey_Hidden() .B-  *   fills a LAST free KEY_BLOCK in the DataBlock without  *   changing the KATTRIBUTE_KEY_EMPTY attribute * **********************************************************************/#define OFFSET_IN_KEY_SPACE  (MAXIMUM_KEY_SIZE_BYTES - sizeof(DWORD) - sizeof(DWORD))#define KEYMAP_IN_KEY_SPACE  (MAXIMUM_KEY_SIZE_BYTES - sizeof(DWORD))static DWORD localDataBlockWriteKey_Hidden(                                          DATA_BLOCK *DataBlock,                                          KEY_BLOCK  *kbFound,                                          ALG_SERV    Alg,                                          DWORD      AlgId,                                          DWORD      AlgKeyLength,                                          char       *Password,                                          BYTE       *Key,                                          DWORD      KeyAttribute, // in the current release we don't use the parameter                                          BYTE       *PoolBuffer,                                          DWORD      Offset,                                          DWORD      Mask                                          ){    BYTE       storageKey[ MAXIMUM_KEY_SIZE_BYTES ];    DWORD      keyHandle, *offsetPlace;    BYTE       iVector[ IVECTOR_LENGTH ];    /* copy encryption key to the KEY_BLOCK memory */    memcpy( kbFound->key, Key, MAXIMUM_KEY_SIZE_BYTES );    /* save offset inside last 4 bytes of key space.       we reserved 64 bytes for key space,o last 4 bytes        are not busy by encryption key - usually up to 32 bytes, maximum one is Blowfish-448,       hence in any case we have 64 bits in key space free. Will use the space       for Offset and Mask)     */    offsetPlace = (DWORD *)(&( kbFound->key[OFFSET_IN_KEY_SPACE] ));    *offsetPlace = Offset;    offsetPlace = (DWORD *)(&( kbFound->key[KEYMAP_IN_KEY_SPACE] ));    *offsetPlace = Mask;    /* calculate digest of the key and save it in KEY_BLOCK */    if ( !CalculateDigest( kbFound->key, MAXIMUM_KEY_SIZE_BYTES - sizeof(DWORD),                            kbFound->digest ) )    {        ShredData( kbFound->key, MAXIMUM_KEY_SIZE_BYTES );        return ERROR_INVALID_ALGORITHM;    }    memcpy( iVector, kbFound->digest, IVECTOR_LENGTH );    /* We don't encrypt pool in the data block with the Key,       because it's already encrypted.    */    /*	Encrypt file-container's encryption key         and its digest using storageKey.        First of all, calculate storageKey from the password     */    if ( !GetStorageKeyFromPassword( Password, storageKey ) )    {        ShredData( kbFound->key, MAXIMUM_KEY_SIZE_BYTES );        ShredData( kbFound->digest, MAXIMUM_DIGEST_SIZE_BYTES );        ShredData( iVector, IVECTOR_LENGTH);        return ERROR_INVALID_ALGORITHM;    }    /*	Load storageKey into the Algorithm driver and again,         the Pool must be filled by zeros, because we are going         to encrypt random data (Key) */    memset( PoolBuffer, 0, POOL_SIZE_BYTES );    if ( alg_make_key( Alg, storageKey, AlgKeyLength,                        PoolBuffer, &keyHandle ) )    {        ShredData( storageKey, MAXIMUM_KEY_SIZE_BYTES );        ShredData( kbFound->key, MAXIMUM_KEY_SIZE_BYTES + MAXIMUM_DIGEST_SIZE_BYTES);        ShredData( iVector, IVECTOR_LENGTH);        return ERROR_INVALID_ALGORITHM;    }    /* Now we don't need in storageKey, because it is copied to the       Algorithm Driver */    ShredData( storageKey, MAXIMUM_KEY_SIZE_BYTES );    /* encrypt the key and its digest copied to the KEY_BLOCK */    if ( alg_encrypt( Alg, keyHandle, iVector,                       kbFound->key, MAXIMUM_KEY_SIZE_BYTES + MAXIMUM_DIGEST_SIZE_BYTES) )    {        alg_free_key( Alg, keyHandle );        ShredData( kbFound->key, MAXIMUM_KEY_SIZE_BYTES + MAXIMUM_DIGEST_SIZE_BYTES);        ShredData( iVector, IVECTOR_LENGTH);        return ERROR_INVALID_ALGORITHM;    }    /* erase storageKey from the Algorithm driver memory */    alg_free_key( Alg, keyHandle );    ShredData( iVector, IVECTOR_LENGTH);    if ( !DataBlockUpdateDigest( DataBlock ) )    {        return ERROR_INTERNAL_PROBLEM;    }    return ERROR_NO;}DWORD DataBlockWriteKey_Hidden(                              DATA_BLOCK *DataBlock,                              ALG_SERV   Alg,                              DWORD      AlgKeyLength,                              char       *Password,                              BYTE       *Key,                              DWORD      KeyAttribute, // in the current release we don't use the parameter                              BYTE       *PoolBuffer,                              DWORD      Offset,                              DWORD      *BusyMask,                              DWORD      KeyBlockPositionMask                              ){    KEY_BLOCK *kbFound;    int       i;    DWORD     mask, dwRes, position;    dwRes = ERROR_NOT_ENOUGH_SPACE_FOR_KEY;    /* Check if Alternative Key Block is initialized. If no, initialize it */    createAlternativeKeyBlock(  DataBlock, Alg, AlgKeyLength, Key, PoolBuffer );    if ( KeyBlockPositionMask == HIDDEN_POSITION_ANY )    {        for ( i = MAXIMUM_NUMBER_OF_KEYS - 1;  i>0;  i-- )        {            kbFound = &(DataBlock->keys[i]);            if ( getAttribute(kbFound->keyAttribute) != KATTRIBUTE_KEY_EMPTY ) continue;            if ( (*BusyMask) & (1 << i) ) continue;            mask = (*BusyMask) | (1 << i);            dwRes = localDataBlockWriteKey_Hidden( DataBlock, kbFound, Alg, Alg.alg_id, AlgKeyLength,                                                   Password, Key, KeyAttribute, PoolBuffer, Offset, mask );            if ( dwRes == ERROR_NO )            {                *BusyMask = mask;                return ERROR_NO;            }        }    } else    {        position = KeyBlockPositionMask;        for ( i = 0;  (i<MAXIMUM_NUMBER_OF_KEYS) && (position != 1);  i++ )        {            position >>= 1;        }        if ( i==MAXIMUM_NUMBER_OF_KEYS ) return ERROR_INTERNAL_PROBLEM;        kbFound = &(DataBlock->keys[i]);        if ( getAttribute(kbFound->keyAttribute) != KATTRIBUTE_KEY_EMPTY )            return ERROR_INTERNAL_PROBLEM;        mask = (*BusyMask) | (1 << i);        dwRes = localDataBlockWriteKey_Hidden( DataBlock, kbFound, Alg, Alg.alg_id, AlgKeyLength,                                               Password, Key, KeyAttribute, PoolBuffer, Offset, mask );        if ( dwRes == ERROR_NO )        {            *BusyMask = mask;            return ERROR_NO;        }    }    return dwRes;}/******************************************************* * * DataBlockVerifyPasswordAndGetKey_Hidden() * *******************************************************/static DWORD localDataBlockVerifyPasswordAndGetKey_Hidden(                                                         DATA_BLOCK *DataBlock,                                                         KEY_BLOCK  *kbFound,                                                         ALG_SERV   Alg,                                                         DWORD      AlgId,                                                         DWORD      AlgKeyLength,                                                         char       *Password,                                                         BYTE       *Key,                                                         BYTE       *PoolBuffer,                                                         DWORD      *Offset,                                                         DWORD      *BusyMask                                                         ){    BYTE  storageKey[ MAXIMUM_KEY_SIZE_BYTES ];    BYTE  keyAndDigest[ MAXIMUM_KEY_SIZE_BYTES + MAXIMUM_DIGEST_SIZE_BYTES ];    BYTE  calculatedDigest[ MAXIMUM_DIGEST_SIZE_BYTES ];    DWORD keyHandle;    BYTE  iVector[ IVECTOR_LENGTH ];    memset( PoolBuffer, 0, POOL_SIZE_BYTES );    if ( getAttribute(kbFound->keyAttribute) != KATTRIBUTE_KEY_EMPTY )        return ERROR_INCORRECT_PASSWORD;    /* Calculate encryption key for decrypting KEY_BLOCK */    if ( !GetStorageKeyFromPassword( Password, storageKey ) )        return ERROR_INVALID_ALGORITHM;    /* Decrypt KEY_BLOCK kb */    /* First, load storageKey into the Algorithm driver */    if ( alg_make_key( Alg, storageKey, AlgKeyLength,                        PoolBuffer, &keyHandle ) )        return ERROR_INVALID_ALGORITHM;    /* Now we don't need in storageKey, because it is saved in the Algorithm Driver */    ShredData( storageKey, MAXIMUM_KEY_SIZE_BYTES );    /* decrypt the key and its digest copied to the KEY_BLOCK */    memcpy( keyAndDigest, kbFound->key, MAXIMUM_KEY_SIZE_BYTES + MAXIMUM_DIGEST_SIZE_BYTES );    /*	initialize iVector with any value.        After first decrypting we will define it exactly */    memset( iVector, 0, IVECTOR_LENGTH );    /* first decryption */    if ( alg_decrypt( Alg, keyHandle, iVector,                       keyAndDigest, MAXIMUM_KEY_SIZE_BYTES + MAXIMUM_DIGEST_SIZE_BYTES) )    {        alg_free_key( Alg, keyHandle );        ShredData( keyAndDigest, MAXIMUM_KEY_SIZE_BYTES + MAXIMUM_DIGEST_SIZE_BYTES);        return ERROR_INVALID_ALGORITHM;    }    /* define Initial Vector exactly */    memcpy( iVector, &(keyAndDigest[MAXIMUM_KEY_SIZE_BYTES]), IVECTOR_LENGTH );    /* second decryption with exact Initial Vector */    memcpy( keyAndDigest, kbFound->key, MAXIMUM_KEY_SIZE_BYTES + MAXIMUM_DIGEST_SIZE_BYTES );    if ( alg_decrypt( Alg, keyHandle, iVector,                       keyAndDigest, MAXIMUM_KEY_SIZE_BYTES + MAXIMUM_DIGEST_SIZE_BYTES) )    {        alg_free_key( Alg, keyHandle );        ShredData( keyAndDigest, MAXIMUM_KEY_SIZE_BYTES + MAXIMUM_DIGEST_SIZE_BYTES);        ShredData( iVector, IVECTOR_LENGTH);        return ERROR_INVALID_ALGORITHM;    }    /* erase storageKey from the Algorithm driver memory */    alg_free_key( Alg, keyHandle );    /* calculate digest of the key and compare it with digest */    if ( !CalculateDigest( keyAndDigest, MAXIMUM_KEY_SIZE_BYTES - sizeof(DWORD),                            calculatedDigest ) )    {        ShredData( keyAndDigest, MAXIMUM_KEY_SIZE_BYTES + MAXIMUM_DIGEST_SIZE_BYTES);        ShredData( iVector, IVECTOR_LENGTH);        return ERROR_INVALID_ALGORITHM;    }    if ( memcmp( calculatedDigest, &(keyAndDigest[MAXIMUM_KEY_SIZE_BYTES]), SHA256_DIGEST_SIZE) != 0 )    {        ShredData( iVector, IVECTOR_LENGTH);        return ERROR_INCORRECT_PASSWORD;    }    /* Get encryption key */    memcpy( Key, keyAndDigest, MAXIMUM_KEY_SIZE_BYTES );    /* Get offset of the hidden part inside container */    *Offset = *(DWORD*)(keyAndDigest + OFFSET_IN_KEY_SPACE );    *BusyMask = *(DWORD*)(keyAndDigest + KEYMAP_IN_KEY_SPACE );    /*	In the following part we will decrypt and place a correct         pool data to the PoolBuffer,        Now everything is Ok, and we have correct IVector.     */    if ( getAttribute(DataBlock->header.state) == STATE_POOL_NOT_INITIALIZED )    {        ShredData( iVector, IVECTOR_LENGTH);        return ERROR_INCORRECT_POOL;    }    /*	Load the Key into the Algorithm driver and again,     the Pool is filled by zeros, because we are going     to decrypt random data (Pool stored in the DataBlock) */    /* Load the Key to encryption algorithm module */    if ( alg_make_key( Alg, Key, AlgKeyLength,                        PoolBuffer, &keyHandle ) )    {        ShredData( iVector, IVECTOR_LENGTH);        return ERROR_INVALID_ALGORITHM;    }    /* copy encrypted pool from DataBlock to the PoolBuffer */    memcpy( PoolBuffer, DataBlock->pool, POOL_SIZE_BYTES );    /* Decrypt pool */    if ( alg_decrypt(    Alg, keyHandle, iVector,                          PoolBuffer, POOL_SIZE_BYTES ) )    {        alg_free_key( Alg, keyHandle );        ShredData( iVector, IVECTOR_LENGTH);        return ERROR_INVALID_ALGORITHM;    }    /* Erase and free the Key data from the encryption algorithm module */    ShredData( iVector, IVECTOR_LENGTH);

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91片在线免费观看| 欧美肥胖老妇做爰| 555www色欧美视频| 国产精品天天摸av网| 午夜伦理一区二区| 不卡的电视剧免费网站有什么| 欧美一区二区三区免费| 一区二区三区在线免费| 国产在线播放一区| 在线综合视频播放| 一区二区三区精密机械公司| 国产在线一区二区综合免费视频| 在线视频你懂得一区| 国产精品色在线观看| 久99久精品视频免费观看| 精品视频在线免费| 亚洲乱码国产乱码精品精可以看 | 制服丝袜国产精品| 一区二区三区在线免费视频| 色综合咪咪久久| 国产精品久久久久桃色tv| 国产成人精品免费网站| 精品久久国产字幕高潮| 日韩成人一区二区三区在线观看| 欧美亚洲日本一区| 亚洲自拍偷拍九九九| 日本久久一区二区三区| 亚洲色欲色欲www| 91在线观看美女| 亚洲欧洲精品一区二区三区不卡| 大尺度一区二区| 中文字幕乱码亚洲精品一区| 国产成人av一区二区| 国产性色一区二区| 国内精品伊人久久久久影院对白| 2021国产精品久久精品| 国产在线精品免费| 国产日韩三级在线| 国产精品1区2区3区| 国产亚洲va综合人人澡精品| 成人性色生活片免费看爆迷你毛片| 国产欧美一区二区在线观看| 成人午夜电影网站| **欧美大码日韩| 在线观看欧美日本| 日韩av一级电影| 久久综合成人精品亚洲另类欧美| 国产乱理伦片在线观看夜一区| 国产丝袜美腿一区二区三区| 91亚洲国产成人精品一区二区三 | 欧美国产日韩一二三区| 91丝袜高跟美女视频| 亚洲小少妇裸体bbw| 欧美一区二区成人| 国产久卡久卡久卡久卡视频精品| 国产精品无人区| 欧美日韩国产成人在线91| 精品一区二区三区视频在线观看 | 欧美大片顶级少妇| 波多野结衣视频一区| 亚洲国产精品精华液网站| 精品久久久网站| www.久久久久久久久| 五月天欧美精品| 国产欧美一区二区精品仙草咪| 在线精品视频免费播放| 秋霞电影网一区二区| 中文字幕乱码久久午夜不卡| 欧美高清www午色夜在线视频| 国产精品一区二区久久不卡| 一区二区三区免费观看| 精品理论电影在线| 在线视频你懂得一区二区三区| 国内精品免费**视频| 亚洲高清免费视频| 国产精品每日更新| 日韩写真欧美这视频| 日本韩国一区二区三区视频| 99久久久久久99| 精品视频在线免费观看| 国产精品日日摸夜夜摸av| 欧美蜜桃一区二区三区| 国产69精品久久久久777| 亚洲国产一区二区在线播放| 国产日韩一级二级三级| 精品噜噜噜噜久久久久久久久试看| 日本电影欧美片| 成人性视频免费网站| 日韩电影在线观看一区| 一区二区三区四区不卡在线 | 97精品国产97久久久久久久久久久久 | 欧美一区二区三区人| 99re免费视频精品全部| 国产精一品亚洲二区在线视频| 亚洲成人中文在线| 亚洲欧美视频在线观看视频| 中文字幕不卡一区| 久久午夜免费电影| 日韩精品在线网站| 亚洲一二三四在线观看| 国产一区二区不卡| 国产精品看片你懂得| 懂色中文一区二区在线播放| 蜜臀久久久久久久| 亚洲成av人在线观看| 亚洲国产视频在线| 亚洲国产视频a| 尤物av一区二区| 亚洲人午夜精品天堂一二香蕉| 国产日韩精品一区二区三区 | 国产一区二区伦理| 美女久久久精品| 日韩激情一二三区| 日本午夜精品视频在线观看 | 成人国产精品视频| 国产成人免费av在线| 国产91丝袜在线播放九色| 国产精品亚洲一区二区三区妖精 | 国产视频一区不卡| 久久蜜桃av一区二区天堂| 国产日本欧洲亚洲| 日本一区二区免费在线观看视频| 国产日韩欧美a| 亚洲女与黑人做爰| 亚洲成人精品影院| 免费观看91视频大全| 精品一区二区三区影院在线午夜| 国产精品一区二区在线观看网站| 国产69精品久久久久毛片| 91在线看国产| 欧美日韩亚洲国产综合| 日韩欧美在线不卡| 国产午夜久久久久| 亚洲精品乱码久久久久久久久 | 欧美变态凌虐bdsm| 久久久www免费人成精品| 国产日韩欧美一区二区三区乱码| 国产精品区一区二区三区| 亚洲综合在线第一页| 免费成人小视频| gogogo免费视频观看亚洲一| 欧美日韩国产首页| 久久久噜噜噜久噜久久综合| 亚洲免费在线看| 蜜臀91精品一区二区三区| 成人精品在线视频观看| 欧美日韩大陆一区二区| 精品国产一区二区三区忘忧草 | 欧美精品xxxxbbbb| wwwwww.欧美系列| 亚洲一区二区三区四区在线免费观看 | 国产精品国产三级国产普通话99| 亚洲小说春色综合另类电影| 国内精品写真在线观看| 在线观看精品一区| 日韩精品一区二| 自拍偷在线精品自拍偷无码专区| 日韩av一区二区三区四区| 99热精品国产| 欧美成人精品1314www| 亚洲激情自拍视频| 国产美女久久久久| 欧美嫩在线观看| √…a在线天堂一区| 国产在线播放一区三区四| 欧美日高清视频| 日韩毛片视频在线看| 国模冰冰炮一区二区| 欧美色国产精品| 亚洲欧洲中文日韩久久av乱码| 国产一区美女在线| 欧美老女人在线| 亚洲免费三区一区二区| 国产成人精品午夜视频免费| 欧美一区二区视频网站| 亚洲一区二区精品3399| 91浏览器打开| 国产精品国产三级国产普通话三级| 韩国毛片一区二区三区| 7777精品伊人久久久大香线蕉最新版| 亚洲日本在线天堂| 丰满少妇久久久久久久| 久久久久久久综合日本| 老鸭窝一区二区久久精品| 6080午夜不卡| 午夜久久久久久电影| 欧美午夜精品免费| 一区二区三区在线视频免费| 一本大道久久a久久综合婷婷| 国产精品视频一二三区| 国产不卡视频在线播放| 国产亚洲短视频| 丁香啪啪综合成人亚洲小说| 久久亚洲影视婷婷| 国产综合色产在线精品| 精品久久久久一区| 国产精品18久久久久久久久| 精品日本一线二线三线不卡 | 亚洲午夜精品在线| 欧美日韩精品高清|