【讨论】求算法
类似求黑箱的算法问题:
如果已知足够大量的加密前内容,同时可得到这些内容对应的加密后内容。
请问,是否可逆推出加密过程(加密算法)?
[解决办法]
不可以。
给你一个简单的例子证明:
假设对你所举的“足够大量的加密前内容”,“这些内容对应的加密后内容”是都加密前内容本身。
你能说该加密算法就是Dec(source)=source,即没有加密的吗?
不能。
因为我的加密算法可能是如下:
//specialString为某个特殊的不包含在“足够大量之内的加密前内容之内”的字符串
if(source == specialString)
{
dest = "sepcialString";
}
else
dest = source;
除非你的足够量大是无限大的情形。
在无限大的情形,才“有可能”逆推出加密算法。
[解决办法]
这样看加密算法的强度。
有三种强度:“已知密文”加密,“已知明文”加密,“选择明文”加密。
对于最后一种“选择明文”加密,即使你可以对任意的明文获得其对应的密文,你也无法推演出其加密算法(或密钥)。