一次一密(one time padding)指在流密码当中使用与消息长度等长的随机密钥, 密钥本身只使用一次。 具体而言,首先选择一个随机位串作为密钥,然后将明文转变成一个位串,比如使用明文的ASCII表示法。最后,逐位计算这两个串的异或值,结果得到的密文不可能被破解,因为即使有了足够数量的密文样本,每个字符的出现概率都是相等的,每任意个字母组合出现的概率也是相等的。这种方法被称为“一次一密” 缺陷与优点 优点:由于使用与消息等长的随机密钥, 产生与原文没有任何统计关系的随机输出,因此一次一密方案不可破解。 缺陷:密钥在传递和分发上存在很大困难。 一种解决方案 使用公钥交换算法如RSA,ECC等方式的Diffie-Hellman进行密钥交换, 但单个密钥字符的范围必须足够大以便防止字典攻击,该方案会降低一次一密的安全性。