相关疑难解决方法(0)

如何在Python中解密OpenSSL AES加密文件?

OpenSSL为AES加密提供了一种流行的(但不安全 - 见下文!)命令行界面:

openssl aes-256-cbc -salt -in filename -out filename.enc
Run Code Online (Sandbox Code Playgroud)

Python以PyCrypto包的形式支持AES,但它只提供工具.如何使用Python/PyCrypto解密使用OpenSSL加密的文件?

注意

此问题过去也涉及使用相同方案的Python加密.我已经删除了那部分以阻止任何人使用它.不要以这种方式加密任何数据,因为它不符合今天的标准.你应该只使用解密,除了后向兼容性之外没有其他原因,即当你别无选择时.想要加密?如果可能的话,使用NaCl/libsodium.

python encryption openssl aes pycrypto

52
推荐指数
3
解决办法
9万
查看次数

以块的形式读取文件 - 使用RAM,从二进制文件读取字符串

我想了解在python中读取大文件时这种方法的RAM使用的差异.

版本1,在stackoverflow上找到:

def read_in_chunks(file_object, chunk_size=1024):
    while True:
        data = file_object.read(chunk_size)
        if not data:
            break
        yield data


f = open(file, 'rb')
for piece in read_in_chunks(f):
    process_data(piece)          
f.close()
Run Code Online (Sandbox Code Playgroud)

版本2,我在找到上面的代码之前使用了这个:

f = open(file, 'rb')
while True:
    piece = f.read(1024)      
    process_data(piece)        
f.close()
Run Code Online (Sandbox Code Playgroud)

在两个版本中都部分读取该文件.并且可以处理当前的部分.在第二个例子中,piece每个周期都有新的内容,所以我认为这样做不会将完整的文件加载到内存中.

但我真的不明白是什么yield,我很确定我在这里弄错了.有谁可以向我解释一下?


除了使用的方法之外,还有一些令我困惑的事情:

我读取的作品的内容由上面示例中的1KB的块大小定义.但是......如果我需要在文件中查找字符串怎么办?有点像"ThisIsTheStringILikeToFind"

根据String发生在文件中的位置,可能是一件包含该部件"ThisIsTheStr"- 而下一件将包含该部件"ingILikeToFind".使用这种方法,不可能在任何一块中检测整个字符串.

有没有办法以块的形式读取文件 - 但不知何故关心这些字符串?

欢迎任何帮助或想法,

映入眼帘!

python string ram

10
推荐指数
3
解决办法
2万
查看次数

标签 统计

python ×2

aes ×1

encryption ×1

openssl ×1

pycrypto ×1

ram ×1

string ×1