国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

3DES實(shí)驗(yàn) 思考與練習(xí):

這篇具有很好參考價(jià)值的文章主要介紹了3DES實(shí)驗(yàn) 思考與練習(xí):。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

T1:關(guān)于3DES的分析 和 庫(kù)函數(shù)的思考——完全領(lǐng)悟了!?。?/p>

#include <stdio.h> 
#include <stdlib.h> 
#include <string.h> 
#include <openssl/des.h> 
/************************************************************************ 
** 本例采用: 
** 3des-ecb加密方式; 
** 24位密鑰,不足24位的右補(bǔ)0x00; 
** 加密內(nèi)容8位補(bǔ)齊,補(bǔ)齊方式為:少1位補(bǔ)一個(gè)0x01,少2位補(bǔ)兩個(gè)0x02,... 
** 本身已8位對(duì)齊的,后面補(bǔ)八個(gè)0x08。 
************************************************************************/ 
int main(void) 
{ 
    int docontinue = 1; 
    char *data = "hello world!"; /* 明文 */ 
    int data_len; 
    int data_rest; 
    unsigned char ch; 
    unsigned char *src = NULL; /* 補(bǔ)齊后的明文 */ 
    unsigned char *dst = NULL; /* 解密后的明文 */ 
    int len; 
    unsigned char tmp[8]; 
    unsigned char in[8]; 
    unsigned char out[8]; 
    char *k = "01234567899876543210"; /* 原始密鑰 */ 
    int key_len; 
    #define LEN_OF_KEY 24 
    unsigned char key[LEN_OF_KEY]; /* 補(bǔ)齊后的密鑰 */ 
    unsigned char block_key[9]; 
    DES_key_schedule ks,ks2,ks3; 
    /* 構(gòu)造補(bǔ)齊后的密鑰 */ 
    key_len = strlen(k); 
    memcpy(key, k, key_len); 
    memset(key + key_len, 0x00, LEN_OF_KEY - key_len); 
    /* 分析補(bǔ)齊明文所需空間及補(bǔ)齊填充數(shù)據(jù) */ 
    data_len = strlen(data); 
    data_rest = data_len % 8; 
    len = data_len + (8 - data_rest); 
    ch = 8 - data_rest; 
    src = (unsigned char *)malloc(len); 
    dst = (unsigned char *)malloc(len); 
    if (NULL == src || NULL == dst) 
    { 
        docontinue = 0; 
    } 
    if (docontinue) 
    { 
        int count; 
        int i; 
        /* 構(gòu)造補(bǔ)齊后的加密內(nèi)容 */ 
        memset(src, 0, len); 
        memcpy(src, data, data_len); 
        memset(src + data_len, ch, 8 - data_rest); 
        /* 密鑰置換 */ 
        memset(block_key, 0, sizeof(block_key)); 
        memcpy(block_key, key + 0, 8); 
        DES_set_key_unchecked((const_DES_cblock*)block_key, &ks); 
        memcpy(block_key, key + 8, 8); 
        DES_set_key_unchecked((const_DES_cblock*)block_key, &ks2); 
        memcpy(block_key, key + 16, 8); 
        DES_set_key_unchecked((const_DES_cblock*)block_key, &ks3); 
        printf("before encrypt:\n"); 
        for (i = 0; i < len; i++) 
        { 
            printf("0x%.2X ", *(src + i)); 
        } 
        printf("\n"); 
        /* 循環(huán)加密/解密,每8字節(jié)一次 */ 
        count = len / 8; 
        for (i = 0; i < count; i++) 
        { 
            memset(tmp, 0, 8); 
            memset(in, 0, 8); 
            memset(out, 0, 8); 
            memcpy(tmp, src + 8 * i, 8); 
            /* 加密 */ 
            DES_ecb3_encrypt((const_DES_cblock*)tmp, (DES_cblock*)in, &ks, &ks2, &ks3, DES_ENCRYPT); 
            /* 解密 */ 
            DES_ecb3_encrypt((const_DES_cblock*)in, (DES_cblock*)out, &ks, &ks2, &ks3, DES_DECRYPT);
            /* 將解密的內(nèi)容拷貝到解密后的明文 */ 
            memcpy(dst + 8 * i, out, 8); 
        } 
        printf("after decrypt :\n"); 
        for (i = 0; i < len; i++) 
        { 
            printf("0x%.2X ", *(dst + i)); 
        } 
        printf("\n"); 
    } 
    if (NULL != src) 
    { 
        free(src);
        src = NULL; 
    } 
    if (NULL != dst) 
    { 
        free(dst); 
        dst = NULL; 
    } 
    return 0; 
}

分析過程:

3DES實(shí)驗(yàn) 思考與練習(xí):

3DES實(shí)驗(yàn) 思考與練習(xí):

T(2):

使用openssl庫(kù)函數(shù) 實(shí)現(xiàn) DES加密:

使用函數(shù)DES_ecb_encrypt來進(jìn)行數(shù)據(jù)加解密
void DES_ecb_encrypt(const_DES_cblock *input,DES_cblock *output, DES_key_schedule *ks,int enc);
函數(shù)功能說明:DES ECB計(jì)算

參數(shù)說明:

input: 輸入數(shù)據(jù);(8字節(jié)長(zhǎng)度)

output: 輸出數(shù)據(jù);(8字節(jié)長(zhǎng)度)

ks: 密鑰;

enc:加密:DES_ENCRYPT , 解密:DES_DECRYPT;

解密:

使用函數(shù)DES_ncbc_encrypt來進(jìn)行數(shù)據(jù)加解密
void DES_ncbc_encrypt(const unsigned char *input,unsigned char *output,
long length,DES_key_schedule *schedule,DES_cblock *ivec,
int enc);

參數(shù)說明:

input: 輸入數(shù)據(jù);(8字節(jié)長(zhǎng)度)

output: 輸出數(shù)據(jù);(8字節(jié)長(zhǎng)度)

length: 數(shù)據(jù)長(zhǎng)度;(這里數(shù)據(jù)長(zhǎng)度不包含初始化向量長(zhǎng)度)

schedule:密鑰;

ivec: 初始化向量;(一般為8個(gè)字節(jié)0)

enc:加密:DES_ENCRYPT , 解密:DES_DECRYPT;
————————————————
版權(quán)聲明:本文為CSDN博主「寧?kù)o致遠(yuǎn)2021」的原創(chuàng)文章,遵循CC 4.0 BY-SA版權(quán)協(xié)議,轉(zhuǎn)載請(qǐng)附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/m0_46577050/article/details/121711502


?文章來源地址http://www.zghlxwxcb.cn/news/detail-437232.html

到了這里,關(guān)于3DES實(shí)驗(yàn) 思考與練習(xí):的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 【密碼算法 之一】對(duì)稱加密算法 DES \ 3DES 淺析

    【密碼算法 之一】對(duì)稱加密算法 DES \ 3DES 淺析

    ??DES(Data Encryption Standard)是1977年美國(guó)聯(lián)邦信息處理標(biāo)準(zhǔn)(FIPS)中所采用的一種對(duì)稱密碼(FIPS 46-3)。DES一直以來被美國(guó)以及其它國(guó)家的政府和銀行等廣泛使用。 ??然而,隨著計(jì)算機(jī)的進(jìn)步,現(xiàn)在DES已經(jīng)能夠被暴力破解,強(qiáng)度大不如從前了。20世紀(jì)末,RSA公司舉辦過破

    2024年02月09日
    瀏覽(22)
  • 密碼學(xué)之DES,3DES與Python實(shí)現(xiàn)AES

    最近項(xiàng)目中需要用到DES,3DES解密算法,所以了解一下。正好CSDN上有關(guān)于DES,3DES的資料。邊看邊寫一下總結(jié)。 密碼學(xué)之DES,3DES詳解與Python實(shí)現(xiàn) DES(Data Encryption Standard-數(shù)據(jù)加密標(biāo)準(zhǔn))屬于對(duì)稱加密,即使用相同的密鑰來完成加密和解密。分組長(zhǎng)度為8個(gè)字節(jié)64bit(密鑰每個(gè)字節(jié)的最

    2024年02月08日
    瀏覽(21)
  • Java 中常見的加密算法,DES、3DES、AES、RSA

    Java 中常見的加密算法,DES、3DES、AES、RSA

    加密算法是一種將數(shù)據(jù)轉(zhuǎn)換為不可讀形式的算法,以保護(hù)數(shù)據(jù)的機(jī)密性和完整性。加密算法被廣泛應(yīng)用于計(jì)算機(jī)網(wǎng)絡(luò)、數(shù)據(jù)庫(kù)、電子商務(wù)等領(lǐng)域,用于保護(hù)敏感數(shù)據(jù)的安全性,如用戶密碼、信用卡信息、醫(yī)療記錄等。在 Java 中,有許多常見的加密算法,本文將對(duì)加密算法的基

    2024年02月03日
    瀏覽(33)
  • JavaScript學(xué)習(xí) -- 對(duì)稱加密算法3DES

    JavaScript學(xué)習(xí) -- 對(duì)稱加密算法3DES

    在現(xiàn)代的互聯(lián)網(wǎng)時(shí)代,數(shù)據(jù)安全性備受關(guān)注。為了保護(hù)敏感數(shù)據(jù)的機(jī)密性,對(duì)稱加密算法是一種常用的方法。在JavaScript中,3DES(Triple Data Encryption Standard)是一種常用的對(duì)稱加密算法。本篇博客將為您展示如何在JavaScript中使用3DES算法進(jìn)行加密和解密,并提供一個(gè)實(shí)際的例子

    2024年02月14日
    瀏覽(37)
  • Sweet32漏洞,升級(jí)openssl或者禁用3DES和DES弱加密算法

    由于等保的原因,被服務(wù)商掃描出漏洞。 warnings: | 64-bit block cipher 3DES vulnerable to SWEET32 attack 如何不喜歡使用nmap,也可以使用如下工具testssl.sh,但是輸出的內(nèi)容太多了,本次我只截取部分 解決辦法有兩個(gè),一個(gè)是升級(jí)OpenSSL 1.0.2k-fips 26 Jan 2017 以上,另外一個(gè)是更新nginx配置,禁

    2024年02月11日
    瀏覽(27)
  • DES和3DES等常見加解密的關(guān)鍵要素---安全行業(yè)基礎(chǔ)篇3

    DES和3DES等常見加解密的關(guān)鍵要素---安全行業(yè)基礎(chǔ)篇3

    DES和3DES是對(duì)稱加密算法,其加密和解密的關(guān)鍵要素包括: 密鑰:DES和3DES使用相同長(zhǎng)度的密鑰進(jìn)行加密和解密。DES使用56位密鑰,而3DES可以使用112位或168位密鑰。密鑰是保護(hù)數(shù)據(jù)安全的關(guān)鍵,必須保持機(jī)密并只與授權(quán)用戶共享。 明文:明文是要加密的原始數(shù)據(jù)。在DES/3DES中,

    2024年02月09日
    瀏覽(17)
  • 通俗易懂,十分鐘讀懂DES,詳解DES加密算法原理,DES攻擊手段以及3DES原理。Python DES實(shí)現(xiàn)源碼

    通俗易懂,十分鐘讀懂DES,詳解DES加密算法原理,DES攻擊手段以及3DES原理。Python DES實(shí)現(xiàn)源碼

    DES(Data Encryption Standard)是一種 對(duì)稱加密 算法。它是在20世紀(jì)70年代初期由IBM研發(fā)的。它的設(shè)計(jì)目標(biāo)是提供高度的數(shù)據(jù)安全性和性能,并且能夠在各種硬件和軟件平臺(tái)上實(shí)現(xiàn)。 DES使用56位的密鑰和64位的明文塊進(jìn)行加密。DES算法的分組大小是64位,因此,如果需要加密的明文長(zhǎng)

    2024年02月03日
    瀏覽(28)
  • php常用加密算法大全aes、3des、rsa等

    目錄 一、可解密加解密算法 1、aes 加解密算法 2、舊3des加解密方法 ?3、新3des加解密方法 4、rsa公私鑰加解密、簽名驗(yàn)簽方法 5、自定義加密算法1? 6、自定義加密算法2 7、自定義加密算法3 二、不可解密加密算法? 1、md5算法? 2、crypt算法 3、sha1算法 5、hash 算法 6、 password_ha

    2024年02月09日
    瀏覽(29)
  • 3DES算法的起源與演進(jìn):保障信息安全的重要里程碑

    3DES算法的起源與演進(jìn):保障信息安全的重要里程碑

    3DES算法是DES算法的增強(qiáng)版,由IBM公司在上世紀(jì)90年代初提出。DES算法的密鑰長(zhǎng)度只有56位,隨著計(jì)算機(jī)計(jì)算能力的提升,其安全性逐漸受到威脅。為了增強(qiáng)數(shù)據(jù)的安全性,3DES算法采用了三次DES算法的迭代加密過程,使得密鑰長(zhǎng)度增加到168位。這一改進(jìn)大大提高了數(shù)據(jù)的安全性

    2024年03月09日
    瀏覽(21)
  • C# 采用3DES-MAC進(jìn)行簽名 base64解碼與編碼

    C# 采用3DES-MAC進(jìn)行簽名 base64解碼與編碼

    ** ** 3DES-MAC(Triple Data Encryption Standard Message Authentication Code)是一種消息認(rèn)證碼(MAC)算法,用于驗(yàn)證消息的完整性和真實(shí)性。3DES-MAC使用了3DES(Triple Data Encryption Standard)加密算法的一部分來生成MAC值。以下是使用C#示例演示如何使用3DES-MAC簽名一個(gè)消息: 首先,你需要確保在

    2024年02月09日
    瀏覽(21)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包