人物传记之新月篇
相关故事链接(及时更新):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字节)。 |
文件读写 | 使用标准文件操作函数(fopen 、fread 、fwrite 等)读写文件。 | 使用Python的文件操作方法(open 、read 、write 等)读写文件。 |
加密/解密算法 | 使用OpenSSL库的AES函数实现加密和解密。 | 使用pycryptodome 库的AES模块实现加密和解密。 |
哈希计算 | 使用OpenSSL库的SHA-256函数计算文件哈希值。 | 使用hashlib 模块的SHA-256函数计算文件哈希值。 |
日志模块 | 使用标准文件操作函数将日志写入log.txt 。 | 使用logging 模块将日志写入log.txt 。 |
错误处理机制 | 使用perror 和exit 函数处理错误,记录到日志。 | 使用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语言程序:
-
使用
perror
和exit
函数捕获文件操作和加密/解密过程中的错误。 -
将错误信息记录到日志文件。
-
-
Python程序:
-
使用
try-except
块捕获文件操作和加密/解密过程中的异常。 -
将错误信息记录到日志文件并退出程序。
-
用户交互
-
C语言程序:
-
通过命令行提示用户输入文件路径。
-
提示用户输入加密和解密文件的保存路径。
-
-
Python程序:
-
通过命令行提示用户输入文件路径。
-
提示用户输入加密和解密文件的保存路径。
-
随机密钥生成
-
C语言程序:
-
使用OpenSSL库的
RAND_bytes
函数生成随机密钥。
-
-
Python程序:
-
使用
Crypto.Random
模块的get_random_bytes
函数生成随机密钥。
-
文件读写
-
C语言程序:
-
使用标准文件操作函数(
fopen
、fread
、fwrite
等)读写文件。
-
-
Python程序:
-
使用Python的文件操作方法(
open
、read
、write
等)读写文件。
-
加密/解密算法
-
C语言程序:
-
使用OpenSSL库的AES函数实现加密和解密。
-
-
Python程序:
-
使用
pycryptodome
库的AES模块实现加密和解密。
-
哈希计算
-
C语言程序:
-
使用OpenSSL库的SHA-256函数计算文件哈希值。
-
-
Python程序:
-
使用
hashlib
模块的SHA-256函数计算文件哈希值。
-
日志模块
-
C语言程序:
-
使用标准文件操作函数将日志写入
log.txt
。
-
-
Python程序:
-
使用
logging
模块将日志写入log.txt
。
-
错误处理机制
-
C语言程序:
-
使用
perror
和exit
函数处理错误,记录到日志。
-
-
Python程序:
-
使用
try-except
块捕获异常,记录到日志并退出程序。
-