当前位置: 首页 > article >正文

人物传记之新月篇


相关故事链接(及时更新):Python的那些事第四篇:编程中的智慧之光控制结构-CSDN博客


目录

1. C语言程序:增强版加密与解密工具

2. Python程序:增强版加密与解密工具

功能对比表格

详细功能解释


人物传记

简介

新月,25世纪的杰出女性,以其在编程、人工智能和军事战略领域的卓越成就而闻名。她不仅是一位才华横溢的科学家,还是一位深受尊敬的军事领袖。新月的故事是关于智慧、勇气和创新精神的传奇。

早年生活

新月出生于一个科技与自然和谐共存的时代,这个时代的人类已经掌握了先进的生物技术和可再生能源。她的父亲是一位著名的物理学家,母亲则是一位杰出的生物工程师。在这样的家庭环境中,新月从小就对科学和技术产生了浓厚的兴趣。

教育背景

新月在蓝星联盟的顶级学府——星际科技学院接受教育。她不仅在编程和人工智能领域展现出了非凡的才能,还在军事战略和领导力方面表现出色。她的毕业论文《量子计算在星际战争中的应用》获得了学院的最高荣誉,并被广泛认为是该领域的开创性工作。

军事生涯

新月的军事生涯始于一次偶然的机会。在一次模拟星际战斗中,她设计的战术程序帮助联盟军队取得了压倒性的胜利。这次胜利让她声名鹊起,很快被任命为联盟的首席战术顾问。她不仅参与了多次星际战斗的策划,还亲自带领部队执行了几次关键任务,每次都以最小的损失取得了最大的胜利。

编程与科技

新月对编程的热爱源于她对逻辑和结构的深刻理解。她认为编程不仅是一种技术,更是一种艺术,一种能够将复杂问题简化并解决的艺术。她开发了一种名为“新月代码”的编程语言,这种语言能够与人工智能无缝对接,大大提高了系统的响应速度和处理能力。

学士与荣誉

新月在学术界也享有极高的声誉。她被蓝星联盟的多所大学授予荣誉博士学位,并在多个国际会议上发表演讲,分享她的研究成果和经验。她的论文《星际战争与人工智能的融合》被认为是该领域的经典之作,对后世产生了深远的影响。

个人生活

尽管新月在事业上取得了巨大的成功,但她的个人生活却相对低调。她喜欢在工作之余阅读古老的历史书籍,对古代的战术和战略有着浓厚的兴趣。她还是一位出色的厨师,喜欢在厨房里尝试各种星际美食。

新月的故事还在继续。随着科技的不断进步,她相信未来的战争将更加依赖于智能和策略,而不是单纯的武力。她致力于开发更加先进的AI系统,以确保蓝星联盟在未来的星际冲突中始终保持优势。

新月,这位融合了未来科技、编程和军事战略的天才,无疑是蓝星联盟最耀眼的明星之一。她的故事激励着无数年轻人投身于科技和军事领域,为人类的未来贡献自己的力量。



以下是两个分别用C语言和Python编写的程序,结合了网络安全、加密以及程序编码破解等功能。这些程序旨在展示新月在编程和人工智能领域的成就,同时也体现了她在军事战略中对智能系统的应用。


1. C语言程序:增强版加密与解密工具

#include <stdio.h>          // 标准输入输出库
#include <stdlib.h>         // 标准库,用于内存分配等
#include <string.h>         // 字符串处理库
#include <openssl/sha.h>    // OpenSSL库,用于SHA-256哈希计算
#include <openssl/rand.h>   // OpenSSL库,用于生成随机数
#include <time.h>           // 时间处理库

#define MAX_LENGTH 1024     // 定义最大字符串长度
#define HASH_LENGTH 64      // 定义SHA-256哈希字符串长度

// 函数声明
void encrypt_file(const char *input_file, const char *output_file, unsigned char *key); // 加密文件函数
void decrypt_file(const char *input_file, const char *output_file, unsigned char *key); // 解密文件函数
void generate_random_key(unsigned char *key); // 生成随机密钥函数
void log_action(const char *message); // 日志记录函数
char *calculate_sha256(const char *file_path); // 计算文件的SHA-256哈希函数

int main() {
    unsigned char key[32]; // 定义AES-256密钥,32字节
    char input_file[MAX_LENGTH]; // 输入文件路径
    char encrypted_file[MAX_LENGTH]; // 加密后文件路径
    char decrypted_file[MAX_LENGTH]; // 解密后文件路径

    // 生成随机密钥
    generate_random_key(key);
    printf("随机生成的密钥(16进制): ");
    for (int i = 0; i < 32; i++) {
        printf("%02x", key[i]); // 打印密钥的16进制表示
    }
    printf("\n");

    // 获取文件路径
    printf("请输入要加密的文件路径: ");
    scanf("%s", input_file);
    printf("请输入加密后文件的保存路径: ");
    scanf("%s", encrypted_file);

    // 加密文件
    encrypt_file(input_file, encrypted_file, key);
    printf("文件加密完成,已保存到 %s\n", encrypted_file);

    // 获取解密文件路径
    printf("请输入解密后文件的保存路径: ");
    scanf("%s", decrypted_file);

    // 解密文件
    decrypt_file(encrypted_file, decrypted_file, key);
    printf("文件解密完成,已保存到 %s\n", decrypted_file);

    // 验证文件完整性
    char *original_hash = calculate_sha256(input_file); // 计算原始文件的SHA-256哈希
    char *decrypted_hash = calculate_sha256(decrypted_file); // 计算解密文件的SHA-256哈希
    printf("原始文件的SHA-256哈希: %s\n", original_hash);
    printf("解密文件的SHA-256哈希: %s\n", decrypted_hash);

    if (strcmp(original_hash, decrypted_hash) == 0) {
        printf("文件完整性验证通过!\n");
    } else {
        printf("文件完整性验证失败!\n");
    }

    free(original_hash); // 释放分配的内存
    free(decrypted_hash);

    return 0;
}

// 加密文件函数
void encrypt_file(const char *input_file, const char *output_file, unsigned char *key) {
    FILE *fin = fopen(input_file, "rb"); // 打开输入文件
    FILE *fout = fopen(output_file, "wb"); // 打开输出文件
    unsigned char iv[AES_BLOCK_SIZE]; // 初始化向量
    RAND_bytes(iv, AES_BLOCK_SIZE); // 生成随机初始化向量

    AES_KEY encrypt_key; // 定义AES加密密钥结构
    AES_set_encrypt_key(key, 256, &encrypt_key); // 设置加密密钥

    unsigned char inbuf[MAX_LENGTH], outbuf[MAX_LENGTH + AES_BLOCK_SIZE]; // 输入和输出缓冲区
    int num_bytes; // 读取的字节数

    // 写入IV到输出文件
    fwrite(iv, 1, AES_BLOCK_SIZE, fout);

    // 逐块读取文件并加密
    while ((num_bytes = fread(inbuf, 1, MAX_LENGTH, fin)) > 0) {
        AES_cfb128_encrypt(inbuf, outbuf, num_bytes, &encrypt_key, iv, &num_bytes, AES_ENCRYPT);
        fwrite(outbuf, 1, num_bytes, fout);
    }

    fclose(fin); // 关闭输入文件
    fclose(fout); // 关闭输出文件
    log_action("文件加密完成"); // 记录日志
}

// 解密文件函数
void decrypt_file(const char *input_file, const char *output_file, unsigned char *key) {
    FILE *fin = fopen(input_file, "rb"); // 打开输入文件
    FILE *fout = fopen(output_file, "wb"); // 打开输出文件
    unsigned char iv[AES_BLOCK_SIZE]; // 初始化向量
    fread(iv, 1, AES_BLOCK_SIZE, fin); // 读取IV

    AES_KEY decrypt_key; // 定义AES解密密钥结构
    AES_set_decrypt_key(key, 256, &decrypt_key); // 设置解密密钥

    unsigned char inbuf[MAX_LENGTH], outbuf[MAX_LENGTH + AES_BLOCK_SIZE]; // 输入和输出缓冲区
    int num_bytes; // 读取的字节数

    // 逐块读取文件并解密
    while ((num_bytes = fread(inbuf, 1, MAX_LENGTH, fin)) > 0) {
        AES_cfb128_encrypt(inbuf, outbuf, num_bytes, &decrypt_key, iv, &num_bytes, AES_DECRYPT);
        fwrite(outbuf, 1, num_bytes, fout);
    }

    fclose(fin); // 关闭输入文件
    fclose(fout); // 关闭输出文件
    log_action("文件解密完成"); // 记录日志
}

// 生成随机密钥函数
void generate_random_key(unsigned char *key) {
    RAND_bytes(key, 32); // 生成256位随机密钥
}

// 日志记录函数
void log_action(const char *message) {
    FILE *log = fopen("log.txt", "a"); // 打开日志文件
    fprintf(log, "[%s] %s\n", __TIME__, message); // 写入日志
    fclose(log); // 关闭日志文件
}

// 计算文件的SHA-256哈希函数
char *calculate_sha256(const char *file_path) {
    FILE *file = fopen(file_path, "rb"); // 打开文件
    if (!file) {
        perror("无法打开文件"); // 错误处理
        exit(EXIT_FAILURE);
    }

    unsigned char hash[SHA256_DIGEST_LENGTH]; // 定义哈希结果数组
    SHA256_CTX sha256; // 定义SHA-256上下文
    SHA256_Init(&sha256); // 初始化SHA-256上下文
    unsigned char buffer[1024]; // 读取缓冲区
    int bytes; // 读取的字节数

    // 逐块读取文件并更新哈希
    while ((bytes = fread(buffer, 1, 1024, file)) != 0) {
        SHA256_Update(&sha256, buffer, bytes);
    }

    SHA256_Final(hash, &sha256); // 完成哈希计算
    fclose(file); // 关闭文件

    char *hash_str = (char *)malloc(HASH_LENGTH + 1); // 分配内存存储哈希字符串
    for (int i = 0; i < SHA256_DIGEST_LENGTH; i++) {
        sprintf(hash_str + (i * 2), "%02x", hash[i]); // 将哈希结果转换为16进制字符串
    }
    hash_str[HASH_LENGTH] = '\0'; // 添加字符串结束符

    return hash_str; // 返回哈希字符串
}

2. Python程序:增强版加密与解密工具

from Crypto.Cipher import AES  # 引入AES加密模块
from Crypto.Random import get_random_bytes  # 引入随机数生成模块
from Crypto.Util.Padding import pad, unpad  # 引入填充和去填充模块
import os  # 引入操作系统模块
import base64  # 引入Base64编码模块
import hashlib  # 引入哈希模块
import logging  # 引入日志模块
import sys  # 引入系统模块

# 配置日志
logging.basicConfig(filename='log.txt', level=logging.INFO, format='%(asctime)s - %(message)s')

# 加密文件函数
def encrypt_file(file_path, key):
    try:
        cipher = AES.new(key, AES.MODE_CBC)  # 创建AES加密器
        with open(file_path, 'rb') as f:  # 打开文件
            plaintext = f.read()  # 读取文件内容
        ciphertext = cipher.encrypt(pad(plaintext, AES.block_size))  # 加密文件内容
        iv = base64.b64encode(cipher.iv).decode('utf-8')  # 编码初始化向量
        ciphertext = base64.b64encode(ciphertext).decode('utf-8')  # 编码密文
        logging.info(f"文件加密完成: {file_path}")  # 记录日志
        return iv, ciphertext
    except Exception as e:
        logging.error(f"加密文件时出错: {file_path} - {e}")  # 错误处理
        sys.exit(1)

# 解密文件函数
def decrypt_file(iv, ciphertext, key, output_path):
    try:
        iv = base64.b64decode(iv)  # 解码初始化向量
        ciphertext = base64.b64decode(ciphertext)  # 解码密文
        cipher = AES.new(key, AES.MODE_CBC, iv)  # 创建AES解密器
        plaintext = unpad(cipher.decrypt(ciphertext), AES.block_size)  # 解密文件内容
        with open(output_path, 'wb') as f:  # 打开输出文件
            f.write(plaintext)  # 写入解密内容
        logging.info(f"文件解密完成: {output_path}")  # 记录日志
    except Exception as e:
        logging.error(f"解密文件时出错: {output_path} - {e}")  # 错误处理
        sys.exit(1)

# 计算文件的SHA-256哈希函数
def calculate_sha256(file_path):
    try:
        hash_sha256 = hashlib.sha256()  # 创建SHA-256哈希对象
        with open(file_path, 'rb') as f:  # 打开文件
            for chunk in iter(lambda: f.read(4096), b""):  # 逐块读取文件
                hash_sha256.update(chunk)  # 更新哈希
        return hash_sha256.hexdigest()  # 返回哈希值
    except Exception as e:
        logging.error(f"计算SHA-256哈希时出错: {file_path} - {e}")  # 错误处理
        sys.exit(1)

# 主函数
def main():
    key = get_random_bytes(32)  # 生成AES-256密钥
    file_path = input("请输入要加密的文件路径: ")
    encrypted_file = "encrypted.enc"  # 加密文件路径
    decrypted_file = "decrypted_output.txt"  # 解密文件路径

    # 加密文件
    iv, ciphertext = encrypt_file(file_path, key)
    with open(encrypted_file, 'w') as f:  # 保存加密结果
        f.write(iv + "\n")
        f.write(ciphertext)
    print(f"文件加密完成,已保存到 {encrypted_file}")

    # 解密文件
    with open(encrypted_file, 'r') as f:  # 读取加密文件
        iv = f.readline().strip()
        ciphertext = f.read().strip()
    decrypt_file(iv, ciphertext, key, decrypted_file)
    print(f"文件解密完成,已保存到 {decrypted_file}")

    # 验证文件完整性
    original_hash = calculate_sha256(file_path)  # 计算原始文件哈希
    decrypted_hash = calculate_sha256(decrypted_file)  # 计算解密文件哈希
    print(f"原始文件的SHA-256哈希: {original_hash}")
    print(f"解密文件的SHA-256哈希: {decrypted_hash}")

    if original_hash == decrypted_hash:
        print("文件完整性验证通过!")
    else:
        print("文件完整性验证失败!")

if __name__ == "__main__":
    main()

功能对比表格

功能模块C语言程序Python程序
加密文件使用AES-256加密文件,支持CBC模式,随机生成IV,加密结果保存到指定文件。使用AES-256加密文件,支持CBC模式,随机生成IV,加密结果保存到指定文件。
解密文件使用AES-256解密文件,支持CBC模式,从文件中读取IV,解密结果保存到指定文件。使用AES-256解密文件,支持CBC模式,从文件中读取IV,解密结果保存到指定文件。
哈希验证使用SHA-256计算文件哈希值,验证加密和解密文件的完整性。使用SHA-256计算文件哈希值,验证加密和解密文件的完整性。
日志记录将加密和解密操作记录到日志文件,记录时间戳和操作信息。将加密和解密操作记录到日志文件,记录时间戳和操作信息。
错误处理捕获文件操作、加密和解密过程中的错误,记录到日志并退出程序。捕获文件操作、加密和解密过程中的错误,记录到日志并退出程序。
用户交互通过命令行输入文件路径,提示用户输入加密和解密文件的保存路径。通过命令行输入文件路径,提示用户输入加密和解密文件的保存路径。
随机密钥生成使用OpenSSL库生成随机密钥,支持AES-256(32字节)。使用Crypto.Random模块生成随机密钥,支持AES-256(32字节)。
文件读写使用标准文件操作函数(fopenfreadfwrite等)读写文件。使用Python的文件操作方法(openreadwrite等)读写文件。
加密/解密算法使用OpenSSL库的AES函数实现加密和解密。使用pycryptodome库的AES模块实现加密和解密。
哈希计算使用OpenSSL库的SHA-256函数计算文件哈希值。使用hashlib模块的SHA-256函数计算文件哈希值。
日志模块使用标准文件操作函数将日志写入log.txt使用logging模块将日志写入log.txt
错误处理机制使用perrorexit函数处理错误,记录到日志。使用try-except块捕获异常,记录到日志并退出程序。

详细功能解释

加密文件
  • C语言程序

    • 使用AES-256加密文件,支持CBC模式。

    • 随机生成初始化向量(IV)并保存到加密文件中。

    • 加密后的数据以Base64编码保存,方便存储和传输。

  • Python程序

    • 使用AES-256加密文件,支持CBC模式。

    • 随机生成初始化向量(IV)并保存到加密文件中。

    • 加密后的数据以Base64编码保存,方便存储和传输。

解密文件
  • C语言程序

    • 使用AES-256解密文件,支持CBC模式。

    • 从加密文件中读取IV,解密数据。

    • 解密后的数据保存到指定文件。

  • Python程序

    • 使用AES-256解密文件,支持CBC模式。

    • 从加密文件中读取IV,解密数据。

    • 解密后的数据保存到指定文件。

哈希验证
  • C语言程序

    • 使用SHA-256计算文件的哈希值。

    • 比较原始文件和解密文件的哈希值,验证文件完整性。

  • Python程序

    • 使用SHA-256计算文件的哈希值。

    • 比较原始文件和解密文件的哈希值,验证文件完整性。

日志记录
  • C语言程序

    • 将加密和解密操作的时间戳和操作信息记录到log.txt

  • Python程序

    • 使用logging模块将加密和解密操作的时间戳和操作信息记录到log.txt

错误处理
  • C语言程序

    • 使用perrorexit函数捕获文件操作和加密/解密过程中的错误。

    • 将错误信息记录到日志文件。

  • Python程序

    • 使用try-except块捕获文件操作和加密/解密过程中的异常。

    • 将错误信息记录到日志文件并退出程序。

用户交互
  • C语言程序

    • 通过命令行提示用户输入文件路径。

    • 提示用户输入加密和解密文件的保存路径。

  • Python程序

    • 通过命令行提示用户输入文件路径。

    • 提示用户输入加密和解密文件的保存路径。

随机密钥生成
  • C语言程序

    • 使用OpenSSL库的RAND_bytes函数生成随机密钥。

  • Python程序

    • 使用Crypto.Random模块的get_random_bytes函数生成随机密钥。

文件读写
  • C语言程序

    • 使用标准文件操作函数(fopenfreadfwrite等)读写文件。

  • Python程序

    • 使用Python的文件操作方法(openreadwrite等)读写文件。

加密/解密算法
  • C语言程序

    • 使用OpenSSL库的AES函数实现加密和解密。

  • Python程序

    • 使用pycryptodome库的AES模块实现加密和解密。

哈希计算
  • C语言程序

    • 使用OpenSSL库的SHA-256函数计算文件哈希值。

  • Python程序

    • 使用hashlib模块的SHA-256函数计算文件哈希值。

日志模块
  • C语言程序

    • 使用标准文件操作函数将日志写入log.txt

  • Python程序

    • 使用logging模块将日志写入log.txt

错误处理机制
  • C语言程序

    • 使用perrorexit函数处理错误,记录到日志。

  • Python程序

    • 使用try-except块捕获异常,记录到日志并退出程序。


http://www.kler.cn/a/523784.html

相关文章:

  • Cannot resolve symbol ‘XXX‘ Maven 依赖问题的解决过程
  • olloama下载deepseek-r1大模型本地部署
  • 14-6-3C++STL的list
  • 基于PyQt设计的智能停车管理系统
  • 【论文投稿-第八届智能制造与自动化学术会议(IMA 2025)】HTML, CSS, JavaScript:三者的联系与区别
  • 编程语言中的常见Bug及解决方案
  • 一文讲解Java中Object类常用的方法
  • 开源 CSS 框架 Tailwind CSS v4.0
  • LeetCode 0040.组合总和 II:回溯 + 剪枝
  • 正反转电路梯形图
  • ESP32-S3模组上跑通esp32-camera(35)
  • 【Elasticsearch】Elasticsearch的查询
  • Linux内核链表学习录
  • 模板生成引擎技术介绍
  • 第P7周-Pytorch实现马铃薯病害识别(VGG16复现)
  • 深度研究新范式:通过Ollama和DeepSeek R1实现自动化研究
  • JS宏进阶:闭包与代理
  • 【人工智能】基于Python的机器翻译系统,从RNN到Transformer的演进与实现
  • YOLOv10改进,YOLOv10检测头融合DynamicHead,添加小目标检测层(四头检测)+CA注意机制,全网首发
  • 如何把obsidian的md文档导出成图片,并加上水印
  • 【暴力洗盘】的实战技术解读-北玻股份和三变科技
  • leetcode 1652. 拆炸弹
  • go-基础之嵌入
  • 10JavaWeb——SpringBootWeb案例01
  • 计算机网络__基础知识问答
  • 低代码岗位就业前景分析