经过了今天的讨论,并尝试研究和理解你这种加密方法,我认为这种加密方法在特定情况下是不可破解的。不过,很不幸,这种加密方法也是没有应用价值的。这种加密方法,只是random oracle的另一种形式罢了。原来的答案放在分割线下面。
一下将阐述,random oracle是一种怎么样的方法,以及为什么没有使用的价值:
Alice和Bob都有一个真随机比特序列产生器(这种东西存在不存在是个哲学问题,这里不讨论,就认为难以制造就对了),并且能够保证在相同时刻产生相同的比特。
那么对于Alice要发给Bob的一个消息,可以编码成一个二进制的比特序列,然后传给Bob。那么对于一个比特,只可能有两种可能,就是0和1,那么随机比特产生器生成的比特,也只有两种可能,即0和1,将Alice要发给Bob的比特,与随机比特产生器生成的比特异或一下,就可能得到两种结果,就是0和1。随机比特产生器生成0和1的概率都是0.5,所以要加密的这个比特,变化成另一种的概率也是0.5(这个不理解可以自己用异或算一下)。经过这样的加密处理以后,密文比特就可以通过公开信道传给Bob了。
然后,我们需要假设信息的传递是不需要时间的。这样子,Bob在收到Alice发给他的消息的一瞬间,同样也从随机序列产生器里面取出一个比特,做一个同样的异或操作,这样子就可以把密文解密变成原文了。
在这种模式下,那个随机序列产生器就是加密算法的密钥,只要具有这个相同的随机序列产生器的人才能够解密。对于没有这个随机序列产生器的攻击者Eve,即使他有无限的计算能力和存储能力,以及无限的时间,也不能破解这个密文的内容。这种称之为绝对安全。
在实际中,我们无法做到两个人的时钟精确同步。所以,Alice那个密钥(随机序列产生器生成的随机比特序列)需要传递给Bob,通过这个通用的秘密通信模型,我们可以知道,密钥是通过安全信道传递给Bob的。这个样子,就不需要两个一模一样的真随机序列产生器了,只需要Alice一个人有这个产生器,然后加密了明文之后,密文通过公开信道传给Bob,而密钥通过安全信道传给Bob。
于是,问题来了。在这种方法的加密中,密钥的长度和明文的长度是一样的,既然,可以通过安全信道把密钥传过去,那么为什么不通过安全信道传递明文呢?
因为安全信道的建立代价很大,所以我们通过安全信道传输数据不能很多。通过使用高成本的安全信道传输的小秘密,保护使用低成本的、不安全的公开信道传输的大秘密,是密码学解决的问题。所以,这种类似random oracle的加密方法,虽然绝对安全,但是没有任何实用价值。
--------这个是原来的错误的答案------
这个还是属于落后的单表置换密码,而且已经出现过了,就是会把常见的一些字母组合,如ph、ee、ly之类的使用另外的表来替换,一些出现频率高的字母,如e、s也用多种方式替换。这样的方法确实能增加一些破解的难度,但是,也只是增加一些难度而已。
你构造的这种置换表,把一个字母置换成多个字母,并且希望使得各个字母出现的频率相等的做法,看似很高端,但是可能会出现几个问题
1、确实无法破解,但是也使得接受到密文的一方(也就是Bob),无法解密你的内容。
2、密钥,也就是你的置换表,非常庞大,甚至超过你的原文,即使能保证绝对不能破解,也会使得你的加密毫无意义,因为这个和random oracle差不多;