开发者社区> 问答> 正文

如何使用python加密机器上的所有文件?

请告诉我如何加密"C:/"目录下的所有文件。我尝试这个代码:

import pyAesCrypt
from os import stat, remove

bufferSize = 64 * 1024

password = "qesgdghhjopkpokojihug"

# encrypt

with open("*.txt", "rb") as fIn:
    with open("data.txt.aes", "wb") as fOut:
        pyAesCrypt.encryptStream(fIn, fOut, password, bufferSize)

# get encrypted file size

encFileSize = stat("*.txt.aes").st_size

(但它只适用于txt文件,我将加密所有文件) 问题来源StackOverflow 地址:/questions/59466694/how-i-can-encrypt-all-files-of-the-machine-using-python

展开
收起
kun坤 2019-12-25 09:42:40 870 0
1 条回答
写回答
取消 提交回答
  • python下编译py成pyc和pyo (文件加密)

    需要注意的是,编译成pyc或者pyo文件后需要将命名改成与源Python命名一致,将其放在源目录下,虽然其他python文件调用pyd时显示不能检测到该模块,但实际上可以运行。

    由于pyc的编译收到python版本的影响,所以当将编译后的pyc迁移到另一台电脑中时,最好保持python环境一致。

    将python文件.py编译成pyc二进制文件:

    python -m py_file.py
    
    

    或者通过脚本运行

    import py_compile  ##单个文件编译
    import compileall   ##多个文件编译 
    py_compile.compile('path') ##path是包括.py文件名的路径
    

    将python文件编译成pyo二进制文件:

    python -O -m py_file.py
    

    pyc是一种二进制文件,是由py文件经过编译后,生成的文件,是一种byte code,py文件变成pyc文件后,加载的速度有所提高,而且pyc是一种跨平台的字节码,是由python的虚拟机来执行的,这个是类似于JAVA或者.NET的虚拟机的概念。

    注意事项:pyc的内容,是跟python的版本相关的,不同版本编译后的pyc文件是不同的,2.5编译的pyc文件,2.4版本的 python是无法执行的。 什么是pyo文件? pyo是优化编译后的程序 python -O 源文件即可将源程序编译为pyo文件

    什么是pyd文件?

    pyd是python的动态链接库。windows上为pyd文件,Linux上为so文件,pyd文件实际就是dll文件 编译成pyd的方法如下:

    命令行下:(在项目目录下打开命令行或者shell,该命令只能编译一个文件,编译之后会发现出现三个文件,yourmod.c、yourmod.html、yourmod-win_amd64.pyd,此时将c、html和原py文件删除,将pyd文件命名更改为yourmod就可以)

    cythonize -a -i yourmod.pyx

    python代码:(在原项目中编写setup.py文件)

    from distutils.core import setup from Cython.Build import cythonize import os

    ''' 该文件的执行需要的在Terminal中输入 python setup.py build_ext --inplace !!! 使用Cpython 编译python文件,关键函数编译成pyd文件(相当于dll) '''

    针对多文件情况设置,单文件就只写一个就行

    key_funs = ["yourmod1.py", "yourmod2.py", "yourmod3.py"]

    setup(
        name="XX app",
    

    ext_modules = cythonize(key_funs), )

    ''' 1、将编译后的pyd文件的命名更改成与原py文件一致 2、删除编译后得到的c文件和原py文件 '''

    print("——————", os.getcwd(), "——————")

    files = os.listdir(os.getcwd()) print(files)

    for fi in files: if fi.contains(".pyd"): re_name = fi.split(".")[0] + ".pyd" print(re_name) os.rename(fi, re_name) elif fi.contains(".c") or fi in key_funs: os.remove(fi)

    运行方式 在原目录的命令行下执行

    python setup.py build_ext --inplace

    2019-12-25 11:32:22
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
From Python Scikit-Learn to Sc 立即下载
Data Pre-Processing in Python: 立即下载
双剑合璧-Python和大数据计算平台的结合 立即下载