贡献者: addis
如果需要一些新手友好的加密方案,见 cryptomater,它会挂载一个虚拟硬盘内,显示解密后的文件系统。而实际上这个硬盘中的数据加密后存在真实的硬盘中,便于网盘同步等。
以下给出一些常用的 python 加密函数,可以加密单个文件,加密字符串,加密一个文件夹中所有文件/文件名。注意该脚本只能在 linux 环境使用(因为需要调用命令行的 openssl)。在 Windows 中可以通过 WSL 中使用该脚本。事实上也可以用 pyOpenSSL 模块来增加可移植性。
加密算法为 aes-256-cbc,-nosalt 意味着同样的数据和密码生成的加密文件一摸一样(以支持网盘的 “秒传” 功能)。若去掉该选项可能会让加密变得更安全一些。
openssl,例如 sudo apt install openssl。
=== what to run === 下面输入想要运行的函数,例如想加密一个字符串,用 print(encrypt_str('some string', password))。注意不要替换 password,脚本运行后会提示手动输入密码
cd 到脚本所在路径,运行 ./encrypt.py 即可。
decrypt_str('m1slBeA8WhZiP8YBgMtw/9zxV2G', password)
encrypt(要加密的文件, 加密后的文件, password)
decrypt(要加密的文件, 加密后的文件, password)
加密的字符串 = encrypt_str(要加密的字符串, password)
解密的字符串 = decrypt_str(要解密的字符串, password)
encrypt_files_in_folder(要加密的文件夹, 输出前缀, password)。加密后会生成新的文件夹 输出前缀-要加密的文件夹,原文件夹不会改变。
decrypt_files_in_folder(要解密的文件夹, 输出前缀, password)。解密后会生成新的文件夹 输出前缀-要解密的文件夹,原文件夹不会改变。
encrypt_names_in_folder(要加密的文件夹, password)。要加密的文件夹 本身的名字不会被加密,而包含的所有文件(夹)名会被加密后重命名,注意文件内容不会改变。加密后的文件(夹)名以 file_extension 字符串结尾,默认是 .eNc。若加密后的名字超出长度,则会创建文件 要加密的文件夹/enc-long-name-dic.txt 作为对照表(解密时该表会被自动读取)。为了尽可能使加密名称的长度小于系统限制,加密后的文件名采用 base16384_utf8_chinese_sorted.txt 中的 16384 个汉字编码。
decrypt_names_in_folder(要解密的文件夹, password)。
encrypt_folder(要加密的文件夹, 输出前缀, password) 相当于先调用 encrypt_files_in_folder(要加密的文件夹, 输出前缀, password) 再调用 encrypt_names_in_folder(输出前缀 + 要加密的文件夹, password)
decrypt_folder(要解密的文件夹, 输出前缀, password) 与上一条相反。
file_extension 指定加密名称的拓展名。
dic_file 指定用于指定加密名称超出长度的对照表文件名。
base16384_str 字符串从文件 base16384_utf8_chinese_sorted.txt 中读取 16384 个字符。
base64字符串 = utf8_to_base64(字符串) 用于把字符串转换为 base64 编码。
自定义编码字符串 = base64_to_custom_base(base64字符串, 编码字符串) 使用 编码字符串(如 base16384_str)对 base64字符串 进行编码。
base64字符串 = custom_base_to_base64(自定义编码字符串, 编码字符串) 使用 编码字符串(如 base16384_str)对 自定义编码字符串 进行解码。
 
 
 
 
 
 
 
 
 
 
 
友情链接: 超理论坛 | ©小时科技 保留一切权利