【问题标题】:Entropy and encrypted files熵和加密文件
【发布时间】:2021-01-14 16:08:52
【问题描述】:

我有一个问题需要帮助。 通常,在加密文件中,文件大小比未加密文件大。在这些时候熵会减少吗?我知道在 python 中熵的计算如下:

print('myfile.text'.format)
with open(r"C:\Users\Parisa\Desktop\myfile.txt", 'rb') as f:
byteArr = list(f.read())
fileSize = len(byteArr)
print
print('File size in bytes: {:,d}'.format(fileSize))
# calculate the frequency of each byte value in the file
print('Calculating Shannon entropy of file. Please wait...')
freqList = []
for b in range(256):
    ctr = 0
    for byte in byteArr:
        if byte == b:
            ctr += 1
    freqList.append(float(ctr) / fileSize)
# Shannon entropy
ent = 0.0
for freq in freqList:
    if freq > 0:
        ent = ent + freq * math.log(freq, 2)
ent = -ent
print('Shannon entropy: {}'.format(ent))[![enter image description here][1]][1]

stack.imgur.com/jMhkc.png 这是加密后的

这是在加密之前

【问题讨论】:

    标签: file entropy


    【解决方案1】:

    加密文件的熵最大化。熵是衡量文件“随机性”的指标。

    这是文本文件通常的外观,根据文件内容绘制熵:

    这是加密文件的外观(忽略低熵的微小峰值,它是由某些标头信息或等效信息引起的):

    加密文件的熵接近 1。如果不是,它们就不会被很好地加密。模式 == 低熵,低熵 == 加密错误。

    【讨论】:

    • 感谢您的帮助。但是如果加密文件的大小超过未加密的文件,熵会减少吗?
    • 不,肯定不是。即使加密文件的大小更大,熵也不会减少。
    • 很抱歉问了这么多问题。加密文件中熵减少但卡方增加的可能吗?
    • 您是否尝试使用卡方测试加密文件对其明文的依赖性?我不明白为什么卡方会出现这种情况?
    • 是的,我们可以说如果加密文件的卡方比未加密文件的卡方增加,那么加密就完成了吗?
    【解决方案2】:

    你真的碰到了一些困难的事情。让我引用过去的一些家伙:-

    “我最关心的是如何称呼它。我想把它叫做“信息”,但是这个词用得太多了,所以我决定把它叫做“不确定性”。当我与约翰·冯·诺依曼讨论时,他有了一个更好的主意。冯诺依曼告诉我,“你应该把它叫做熵,有两个原因。首先,您的不确定性函数已在该名称下用于统计力学,因此它已经有了名称。其次,更重要的是,没有人知道熵到底是什么,所以在辩论中你总是有优势的。”

    -克劳德·香农。

    正如elsewhere 所讨论的,当您加密源/纯文本时,“熵”通常会增加。我可能没有深入细节,但根据上面的引述,熵有不同的定义。特别是在密码学中。密文看起来会更复杂。


    使用来自hereent

    【讨论】:

    • 感谢您的介绍和您的帮助。
    猜你喜欢
    • 2017-04-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-20
    • 1970-01-01
    • 1970-01-01
    • 2017-02-03
    • 2013-11-19
    相关资源
    最近更新 更多