一条消息M的信息量可通过它的熵(entropy)来度量,表示为H(M)。公式为,n是消息所有等可能的值。假设所有消息是等可能的,对消息中所有可能的值进行编码所需要的最少位数。
例如:"一周中每一天",一共包含7种等可能的事件,这一字段包含不超过3位的信息,因为此消息可以用3位进行编码
000 = 周日
001 = 周一
010 = 周二
011 = 周三
100 = 周四
101 = 周五
111 = 周六
再例如:“性别”,一种包含2中等可能的事件,这一字段包含不超过1位的信息,因为此消息可以用1位进行编码
0 = 男
1 = 女
size_t CryptionMath::Entropy(size_t nNum)
{
return static_cast<size_t>(ceil(log2(nNum)));
}
语言的冗余度越大,它就越容易被攻击。许多正在使用的密码装置在加密明文前,都要用一个压缩程序减少明文大小,其原因就在于此。加密、解密时均需压缩处理来降低消息的冗余度。