团队任务总结
一、团队成员任务分配
为了推进项目的进展,我们团队在今天共同完成了两个重要的功能模块。以下是团队成员在这两个模块上的任务分配和进展:
-
张钰权: 负责解密功能的实现。成功完成了解密文件的编写,包括AES解密和RSA密钥解密,确保解密过程的正确性和安全性。
-
周绍坤: 参与了解密功能的编写过程,负责协助处理解密时可能遇到的异常情况,并对项目的异常处理进行了优化。
-
张爽: 参与了SM4密钥生成和RSA密钥对生成功能的编写,保障了项目中关键的密钥生成和管理。
-
王熠名: 负责加密功能的实现。完成了文件加密的编写,包括AES加密和RSA密钥加密,确保了文件的安全传输和存储。
-
董子瑄: 参与了加密功能的编写过程,对加密时可能遇到的问题进行了分析和解决,提高了加密过程的稳定性。
二、团队任务及进展
在今天的工作中,我们小组成功完成了两个关键功能的编写:
-
解密功能模块:
- 张钰权成功实现了文件的解密过程,通过AES解密和RSA密钥解密,确保了解密操作的正确性和安全性。
- 周绍坤在解密模块中进行了异常处理的优化,提高了系统的稳定性。
-
加密功能模块:
- 张爽,王熠名成功完成了文件的加密过程,通过AES加密和RSA密钥加密,确保了文件在传输和存储过程中的安全性。
- 董子瑄在加密模块中分析并解决了可能出现的问题,提高了加密操作的稳定性。
三、团队遇到的困难
在完成这两个功能模块的过程中,团队遇到了一些挑战:
-
密钥管理: 对于密钥的生成、存储和使用,团队需要更加仔细地考虑安全性和可维护性。
-
异常处理: 在解密和加密过程中,可能会涉及到多种异常情况,团队需要进一步完善异常处理机制,确保系统不会出现较为离谱的漏洞。
四、心得体会
团队成员在合作完成这两个功能模块的过程中积累了许多经验:
-
张钰权: 在解密功能的编写中,我对AES和RSA的结合使用有了更深入的理解,同时对异常情况的处理也有了更多实践。
-
周绍坤: 通过参与解密功能的编写,我对异常处理有了更清晰的认识,同时也意识到密钥管理在项目中的重要性。
-
张爽: 参与了密钥生成功能的编写,对密钥的生成和存储有了更加深入的了解,为项目的密钥管理提供了可靠的基础。
-
王熠名: 在加密功能的实现中,我学到了如何结合AES和RSA实现更加安全的文件加密,对加密算法有了更深刻的理解。
-
董子瑄: 参与了加密功能的编写,通过解决可能出现的问题,我对加密操作的稳定性需求有了更多的认识。
五、明日计划
为了进一步推进项目,团队制定了明日的计划:
-
优化密钥管理: 进一步完善密钥的生成、存储和使用机制,确保系统的密钥管理更加安全可靠。
-
异常处理优化: 针对解密和加密过程中可能出现的异常情况,进一步优化异常处理机制,提高系统的鲁棒性。
-
性能优化: 对解密和加密功能进行性能测试,优化代码,确保系统在大规模文件操作时仍能保持高效。
-
文档整理: 对已完成的功能模块进行文档整理,确保项目的文档清晰明了,方便后续维护和扩展。
六、总结
今天的团队合作中,大家共同完成了解密和加密功能模块,充分展现了团队成员在技术和协作方面的能力。通过不断学习和合作,我们相信在未来的项目中,团队将能够更好地应对各种挑战,取得更多的进展。
七、代码示例
from Crypto.Cipher import AES from cryptography.hazmat.backends import default_backend from cryptography.hazmat.primitives import serialization, hashes from cryptography.hazmat.primitives.asymmetric import rsa, padding from Crypto.Util.Padding import unpad import os def decrypt_sm4(ciphertext, key): iv = ciphertext[:16] cipher = AES.new(key, AES.MODE_CBC, iv) plaintext = unpad(cipher.decrypt(ciphertext[16:]), AES.block_size) return plaintext def decrypt_file(input_path, output_dir, rsa_private_key_path, sm4_key_path): try: with open(input_path, 'rb') as file: content = file.read() # 从外部加载 SM4 密钥文件 with open(sm4_key_path, 'rb') as sm4_key_file: sm4_key = sm4_key_file.read() # 使用 RSA 私钥解密 SM4 密钥 rsa_private_key = serialization.load_pem_private_key( open(rsa_private_key_path, 'rb').read(), password=None, backend=default_backend() ) sm4_key = rsa_private_key.decrypt( sm4_key, padding.PKCS1v15() ) # 分离加密的文件内容 enc_content = content decrypted_content = decrypt_sm4(enc_content, sm4_key) decrypted_file_path = os.path.join(output_dir, os.path.basename(input_path).replace("_enc.docx", "_dec.docx")) # 修改文件扩展名 with open(decrypted_file_path, 'wb') as decrypted_file: decrypted_file.write(decrypted_content) print(f"文件{input_path}解密成功,并保存至{decrypted_file_path}。") except Exception as e: print(f"解密文件{input_path}时发生错误:{e}") def main(input_dir, output_dir, rsa_private_key_path, sm4_key_path): try: os.makedirs(output_dir, exist_ok=True) file_list = [f for f in os.listdir(input_dir) if f.endswith('_enc.docx')] # 修改文件扩展名 for file_name in file_list: decrypt_file(os.path.join(input_dir, file_name), output_dir, rsa_private_key_path, sm4_key_path) except Exception as e: print(f"错误:{e}") if __name__ == "__main__": input_directory = r"e:\dzgwtest" output_directory = r"e:\dzgwtest" rsa_private_key_path = os.path.join(output_directory, "private_key.pem") sm4_key_path = os.path.join(output_directory, "sm4key1.enc") main(input_directory, output_directory, rsa_private_key_path, sm4_key_path)
import os from Crypto.Cipher import AES from cryptography.hazmat.backends import default_backend from cryptography.hazmat.primitives import serialization, hashes from cryptography.hazmat.primitives.asymmetric import rsa, padding from Crypto.Util.Padding import pad def generate_sm4_key(output_dir, count): try: key = os.urandom(16) key_file_path = os.path.join(output_dir, f"sm4key{count}.enc") with open(key_file_path, 'wb') as key_file: key_file.write(key) print(f"SM4密钥{count}生成成功,并保存至{key_file_path}。") return key except Exception as e: print(f"生成SM4密钥时发生错误:{e}") return None def generate_rsa_key_pair(output_dir): private_key = rsa.generate_private_key( public_exponent=65537, key_size=2048, backend=default_backend() ) private_pem = private_key.private_bytes( encoding=serialization.Encoding.PEM, format=serialization.PrivateFormat.PKCS8, encryption_algorithm=serialization.NoEncryption() ) public_key = private_key.public_key() public_pem = public_key.public_bytes( encoding=serialization.Encoding.PEM, format=serialization.PublicFormat.SubjectPublicKeyInfo ) with open(os.path.join(output_dir, "private_key.pem"), 'wb') as private_key_file: private_key_file.write(private_pem) with open(os.path.join(output_dir, "public_key.pem"), 'wb') as public_key_file: public_key_file.write(public_pem) print("RSA密钥对生成成功。") def encrypt_sm4(content, key): cipher = AES.new(key, AES.MODE_CBC) ciphertext = cipher.encrypt(pad(content, AES.block_size)) return cipher.iv + ciphertext def encrypt_file(input_path, output_dir, sm4_key, rsa_public_key): try: with open(input_path, 'rb') as file: content = file.read() enc_content = encrypt_sm4(content, sm4_key) enc_file_path = os.path.join(output_dir, os.path.basename(input_path).replace(".docx", "_enc.docx")) # 修改文件扩展名 with open(enc_file_path, 'wb') as enc_file: enc_file.write(enc_content) enc_rsa_key = rsa_public_key.encrypt( sm4_key, padding.PKCS1v15() ) with open(os.path.join(output_dir, "sm4key1.enc"), 'wb') as sm4_key_file: sm4_key_file.write(enc_rsa_key) print(f"文件{input_path}加密成功,并保存至{enc_file_path}。") except Exception as e: print(f"加密文件{input_path}时发生错误:{e}") def main(input_dir, output_dir): try: os.makedirs(output_dir, exist_ok=True) generate_rsa_key_pair(output_dir) file_list = [f for f in os.listdir(input_dir) if f.endswith('.doc') or f.endswith('.docx')] for i, file_name in enumerate(file_list, start=1): sm4_key = generate_sm4_key(output_dir, i) rsa_public_key_path = os.path.join(output_dir, "public_key.pem") rsa_public_key = serialization.load_pem_public_key( open(rsa_public_key_path, 'rb').read(), backend=default_backend() ) encrypt_file(os.path.join(input_dir, file_name), output_dir, sm4_key, rsa_public_key) except Exception as e: print(f"错误:{e}") if __name__ == "__main__": input_directory = r"e:\dzgwtest" output_directory = r"e:\dzgwtest" main(input_directory, output_directory)
标签:key,sm4,day2,冲刺,file,output,path,dir From: https://www.cnblogs.com/Heartsteel/p/17897611.html