首先,我想问一下你们是否知道使用密钥加密数据的加密算法,但没有密钥可以解密数据.这对我来说似乎不太可能,如果不是不可能,那么对不起,如果这是一个愚蠢的问题.
我的最后一个问题是,你说在加密之前你可以访问纯文本数据,用于加密纯文本数据的密钥,以及产生的加密数据,会弄清楚用于加密数据的算法是否可行?
首先,我想问一下你们是否知道使用密钥加密数据的加密算法,但没有密钥可以解密数据.
没有.有些算法使用不同的密钥来解密而不是加密,但是无密钥方法将依赖于算法的保密性,通常被认为是一个糟糕的想法.
我的最后一个问题是,你说在加密之前你可以访问纯文本数据,用于加密纯文本数据的密钥,以及产生的加密数据,会弄清楚用于加密数据的算法是否可行?
很可能是的,特别是考虑到关键.一个好的加密算法依赖于密钥的保密性和单独的密钥.见kerckhoff的原理.
此外,如果使用通用算法,它将是一个简单的反复试验,除了cryptotext之外,通常还会附带元数据,告诉您算法细节.
编辑:根据评论,您可能正在考虑数字签名(仅在发送方需要秘密),哈希算法(不需要密钥但不需要加密),或者零知识证明(可以证明)知道秘密而不透露它).
抽象地说,我们可以这样想到加密系统:
------------------- plaintext ---> | algorithm & key | ---> ciphertext -------------------
系统必须保证以下内容:
decrypt(加密(明文,算法,密钥),算法,密钥)=明文
首先,我想问一下你们是否知道使用密钥加密数据的加密算法,但没有密钥可以解密数据.
是的,在这样的系统中,关键是多余的; 所有的"秘密"都在于算法.
我的最后一个问题是,你说在加密之前你可以访问纯文本数据,用于加密纯文本数据的密钥,以及产生的加密数据,会弄清楚用于加密数据的算法是否可行?
在实践中,您可能只有很小的算法空间,因此简单的强力搜索是可行的.但是,可能有多个算法适合给定的信息.请考虑以下示例:
我们定义了以下加密和解密操作,其中明文,密文,算法和密钥是实数(假设算法非零):
加密(明文,算法,密钥)=算法x(明文+密钥)=密文
decrypt(密文,算法,密钥)=密文/算法 - 密钥=明文
现在,假设明文+键= 0.对于任何算法选择,我们都有密文= 0.因此,我们无法推断出所使用的算法.