3DES实验 思考与练习:

这篇具有很好参考价值的文章主要介绍了3DES实验 思考与练习:。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

T1:关于3DES的分析 和 库函数的思考——完全领悟了!!!

#include <stdio.h> 
#include <stdlib.h> 
#include <string.h> 
#include <openssl/des.h> 
/************************************************************************ 
** 本例采用: 
** 3des-ecb加密方式; 
** 24位密钥,不足24位的右补0x00; 
** 加密内容8位补齐,补齐方式为:少1位补一个0x01,少2位补两个0x02,... 
** 本身已8位对齐的,后面补八个0x08。 
************************************************************************/ 
int main(void) 
{ 
    int docontinue = 1; 
    char *data = "hello world!"; /* 明文 */ 
    int data_len; 
    int data_rest; 
    unsigned char ch; 
    unsigned char *src = NULL; /* 补齐后的明文 */ 
    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]; /* 补齐后的密钥 */ 
    unsigned char block_key[9]; 
    DES_key_schedule ks,ks2,ks3; 
    /* 构造补齐后的密钥 */ 
    key_len = strlen(k); 
    memcpy(key, k, key_len); 
    memset(key + key_len, 0x00, LEN_OF_KEY - key_len); 
    /* 分析补齐明文所需空间及补齐填充数据 */ 
    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; 
        /* 构造补齐后的加密内容 */ 
        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"); 
        /* 循环加密/解密,每8字节一次 */ 
        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);
            /* 将解密的内容拷贝到解密后的明文 */ 
            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实验 思考与练习:

3DES实验 思考与练习:

T(2):

使用openssl库函数 实现 DES加密:

使用函数DES_ecb_encrypt来进行数据加解密
void DES_ecb_encrypt(const_DES_cblock *input,DES_cblock *output, DES_key_schedule *ks,int enc);
函数功能说明:DES ECB计算

参数说明:

input: 输入数据;(8字节长度)

output: 输出数据;(8字节长度)

ks: 密钥;

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

解密:

使用函数DES_ncbc_encrypt来进行数据加解密
void DES_ncbc_encrypt(const unsigned char *input,unsigned char *output,
long length,DES_key_schedule *schedule,DES_cblock *ivec,
int enc);

参数说明:

input: 输入数据;(8字节长度)

output: 输出数据;(8字节长度)

length: 数据长度;(这里数据长度不包含初始化向量长度)

schedule:密钥;

ivec: 初始化向量;(一般为8个字节0)

enc:加密:DES_ENCRYPT , 解密:DES_DECRYPT;
————————————————
版权声明:本文为CSDN博主「宁静致远2021」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/m0_46577050/article/details/121711502


 文章来源地址https://www.toymoban.com/news/detail-437232.html

到了这里,关于3DES实验 思考与练习:的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【密码算法 之一】对称加密算法 DES \ 3DES 浅析

      DES(Data Encryption Standard)是1977年美国联邦信息处理标准(FIPS)中所采用的一种对称密码(FIPS 46-3)。DES一直以来被美国以及其它国家的政府和银行等广泛使用。   然而,随着计算机的进步,现在DES已经能够被暴力破解,强度大不如从前了。20世纪末,RSA公司举办过破

    2024年02月09日
    浏览(53)
  • 密码学之DES,3DES与Python实现AES

    最近项目中需要用到DES,3DES解密算法,所以了解一下。正好CSDN上有关于DES,3DES的资料。边看边写一下总结。 密码学之DES,3DES详解与Python实现 DES(Data Encryption Standard-数据加密标准)属于对称加密,即使用相同的密钥来完成加密和解密。分组长度为8个字节64bit(密钥每个字节的最

    2024年02月08日
    浏览(37)
  • Java 中常见的加密算法,DES、3DES、AES、RSA

    加密算法是一种将数据转换为不可读形式的算法,以保护数据的机密性和完整性。加密算法被广泛应用于计算机网络、数据库、电子商务等领域,用于保护敏感数据的安全性,如用户密码、信用卡信息、医疗记录等。在 Java 中,有许多常见的加密算法,本文将对加密算法的基

    2024年02月03日
    浏览(54)
  • JavaScript学习 -- 对称加密算法3DES

    在现代的互联网时代,数据安全性备受关注。为了保护敏感数据的机密性,对称加密算法是一种常用的方法。在JavaScript中,3DES(Triple Data Encryption Standard)是一种常用的对称加密算法。本篇博客将为您展示如何在JavaScript中使用3DES算法进行加密和解密,并提供一个实际的例子

    2024年02月14日
    浏览(46)
  • DES和3DES等常见加解密的关键要素---安全行业基础篇3

    DES和3DES是对称加密算法,其加密和解密的关键要素包括: 密钥:DES和3DES使用相同长度的密钥进行加密和解密。DES使用56位密钥,而3DES可以使用112位或168位密钥。密钥是保护数据安全的关键,必须保持机密并只与授权用户共享。 明文:明文是要加密的原始数据。在DES/3DES中,

    2024年02月09日
    浏览(40)
  • Sweet32漏洞,升级openssl或者禁用3DES和DES弱加密算法

    由于等保的原因,被服务商扫描出漏洞。 warnings: | 64-bit block cipher 3DES vulnerable to SWEET32 attack 如何不喜欢使用nmap,也可以使用如下工具testssl.sh,但是输出的内容太多了,本次我只截取部分 解决办法有两个,一个是升级OpenSSL 1.0.2k-fips 26 Jan 2017 以上,另外一个是更新nginx配置,禁

    2024年02月11日
    浏览(41)
  • 通俗易懂,十分钟读懂DES,详解DES加密算法原理,DES攻击手段以及3DES原理。Python DES实现源码

    DES(Data Encryption Standard)是一种 对称加密 算法。它是在20世纪70年代初期由IBM研发的。它的设计目标是提供高度的数据安全性和性能,并且能够在各种硬件和软件平台上实现。 DES使用56位的密钥和64位的明文块进行加密。DES算法的分组大小是64位,因此,如果需要加密的明文长

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

    目录 一、可解密加解密算法 1、aes 加解密算法 2、旧3des加解密方法  3、新3des加解密方法 4、rsa公私钥加解密、签名验签方法 5、自定义加密算法1  6、自定义加密算法2 7、自定义加密算法3 二、不可解密加密算法  1、md5算法  2、crypt算法 3、sha1算法 5、hash 算法 6、 password_ha

    2024年02月09日
    浏览(49)
  • 3DES算法的起源与演进:保障信息安全的重要里程碑

    3DES算法是DES算法的增强版,由IBM公司在上世纪90年代初提出。DES算法的密钥长度只有56位,随着计算机计算能力的提升,其安全性逐渐受到威胁。为了增强数据的安全性,3DES算法采用了三次DES算法的迭代加密过程,使得密钥长度增加到168位。这一改进大大提高了数据的安全性

    2024年03月09日
    浏览(44)
  • C# 采用3DES-MAC进行签名 base64解码与编码

    ** ** 3DES-MAC(Triple Data Encryption Standard Message Authentication Code)是一种消息认证码(MAC)算法,用于验证消息的完整性和真实性。3DES-MAC使用了3DES(Triple Data Encryption Standard)加密算法的一部分来生成MAC值。以下是使用C#示例演示如何使用3DES-MAC签名一个消息: 首先,你需要确保在

    2024年02月09日
    浏览(36)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包