如何不借助Python第三方包实现字符串加密存储及密码解密功能
Python原生实现字符串加密存储与解密工具
功能说明
完全使用Python内置功能实现,无任何第三方包依赖,支持单字符串加密存储、密码校验解密功能,加密后文件为无意义的字符数字组合,不会泄露任何原始输入信息。
实现逻辑
- 采用异或加密算法实现内容加密,加密后转换为十六进制字符串存储,输出为随机数字与字母组合
- 加密时将用户输入的密码、原始字符串共同加密后写入文件,无任何明文内容存储
- 解密时先读取文件内容解密,校验输入密码与存储的加密密码是否一致,校验通过才返回原始字符串
完整代码
def xor_encrypt_decrypt(data: bytes, key: str) -> bytes: key_bytes = key.encode() key_length = len(key_bytes) return bytes([byte ^ key_bytes[index % key_length] for index, byte in enumerate(data)]) if __name__ == "__main__": mode = input("选择模式:1-加密存储 2-解密读取\n请输入选项: ") # 加密流程 if mode == "1": raw_input_str = input("Enter string: ") set_password = input("Enter decryption password: ") save_filename = input("Enter save name: ") # 拼接存储内容,使用罕见分隔符避免和原始内容冲突 store_content = f"{set_password}\x00\x01\x00{raw_input_str}".encode() encrypted_data = xor_encrypt_decrypt(store_content, set_password) # 转十六进制写入文件 with open(save_filename, "w", encoding="utf-8") as f: f.write(encrypted_data.hex()) print(f"加密完成,文件已保存为 {save_filename}") # 解密流程 elif mode == "2": target_file = input("file: ") input_password = input("password: ") try: with open(target_file, "r", encoding="utf-8") as f: hex_content = f.read() # 十六进制转字节后解密 encrypted_bytes = bytes.fromhex(hex_content) decrypted_content = xor_encrypt_decrypt(encrypted_bytes, input_password).decode("utf-8") # 拆分密码和原始字符串 stored_password, original_str = decrypted_content.split("\x00\x01\x00", 1) if stored_password == input_password: print(f"str: {original_str}") else: print("密码错误,无法读取内容") except: print("文件无效或密码错误,无法解密") else: print("输入选项无效")
使用示例
加密操作交互
选择模式:1-加密存储 2-解密读取 请输入选项: 1 Enter string: I like to eat muffins Enter decryption password: password12345 Enter save name: muffin 加密完成,文件已保存为 muffin
解密操作交互
选择模式:1-加密存储 2-解密读取 请输入选项: 2 file: muffin password: password12345 str: I like to eat muffins
注意事项
- 异或加密强度可满足普通非敏感数据存储需求,若存储高敏感数据可自行替换为更复杂的原生实现加密逻辑
- 加密后文件为纯十六进制字符,无任何明文信息,无法直接从文件内容读取原始数据
- 密码存储在加密后的文件内容中,只有输入正确密码才能完成解密并读取原始字符串
内容的提问来源于stack exchange,提问作者Robert McNeil
相关产品推荐
相关产品推荐

