我的对称加密算法安全吗?
Is my symmetric encryption algorithm safe?
我最近决定编写自己的对称加密程序(例如可以在自定义密码管理器中使用)。
我想听听你对他的看法,我是不是犯了大错?不然容易坏吗?
它基本上是一个 Vigenere 分支,试图更接近 Vernam 加密的原理,但仍然易于使用(您可以使用任何密钥来加密您的文本)。
它是如何工作的?
- 您输入一条消息(例如 hello world)和一个种子(例如 seed)。
- 由于哈希函数,种子被转换为数字
- 我们把消息的字母数加到这个数字上,再哈希一次
- 用结果初始化一个伪随机数生成器,并生成文本大小的随机数列表(这是关键)。
- 我们将每个字母与列表中的相应数字进行移位(消息的第一个字母与我们生成的列表的第一个数字进行移位)
Example :
Alphabet: [a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z]
List : [1,18,3,17,0]
Word: "hello"
h+1 = j
e+18 = w
l+3 = o
l+17=c (as the alphabet is finished, we continue at the beginning)
o+0=o
Output: "jwoco"
Vernam加密原理规定:
- 用于偏移字母的键必须至少与文本大小一样大 -> 没关系
- 密钥只能使用一次 -> 如果您更改种子或消息的大小也没关系(因为我们将文本大小包含在用于初始化密钥的哈希中)
- 密钥必须是完全随机的 -> 这将取决于随机数生成算法和哈希算法,但如果它们很好,我们应该有一个输出,没有密钥就不可能找到一个文本比另一个更有可能是原始消息。
我解释清楚了吗?你是否同意我的观点?您有任何要补充的说明吗?随机数生成和哈希算法的改进建议或建议?
祝你有愉快的一天,
托马斯!
Bruce Schneier 的相关轶事:
见https://www.schneier.com/crypto-gram/archives/1998/1015.html#cipherdesign
A cryptographer friend tells the story of an amateur who kept
bothering him with the cipher he invented. The cryptographer would
break the cipher, the amateur would make a change to "fix" it, and the
cryptographer would break it again. This exchange went on a few times
until the cryptographer became fed up. When the amateur visited him to
hear what the cryptographer thought, the cryptographer put three
envelopes face down on the table. "In each of these envelopes is an
attack against your cipher. Take one and read it. Don't come back
until you've discovered the other two attacks." The amateur was never
heard from again.
使用 AES。
我最近决定编写自己的对称加密程序(例如可以在自定义密码管理器中使用)。 我想听听你对他的看法,我是不是犯了大错?不然容易坏吗?
它基本上是一个 Vigenere 分支,试图更接近 Vernam 加密的原理,但仍然易于使用(您可以使用任何密钥来加密您的文本)。
它是如何工作的?
- 您输入一条消息(例如 hello world)和一个种子(例如 seed)。
- 由于哈希函数,种子被转换为数字
- 我们把消息的字母数加到这个数字上,再哈希一次
- 用结果初始化一个伪随机数生成器,并生成文本大小的随机数列表(这是关键)。
- 我们将每个字母与列表中的相应数字进行移位(消息的第一个字母与我们生成的列表的第一个数字进行移位)
Example : Alphabet: [a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z] List : [1,18,3,17,0] Word: "hello" h+1 = j e+18 = w l+3 = o l+17=c (as the alphabet is finished, we continue at the beginning) o+0=o Output: "jwoco"
Vernam加密原理规定:
- 用于偏移字母的键必须至少与文本大小一样大 -> 没关系
- 密钥只能使用一次 -> 如果您更改种子或消息的大小也没关系(因为我们将文本大小包含在用于初始化密钥的哈希中)
- 密钥必须是完全随机的 -> 这将取决于随机数生成算法和哈希算法,但如果它们很好,我们应该有一个输出,没有密钥就不可能找到一个文本比另一个更有可能是原始消息。
我解释清楚了吗?你是否同意我的观点?您有任何要补充的说明吗?随机数生成和哈希算法的改进建议或建议?
祝你有愉快的一天, 托马斯!
Bruce Schneier 的相关轶事:
见https://www.schneier.com/crypto-gram/archives/1998/1015.html#cipherdesign
A cryptographer friend tells the story of an amateur who kept bothering him with the cipher he invented. The cryptographer would break the cipher, the amateur would make a change to "fix" it, and the cryptographer would break it again. This exchange went on a few times until the cryptographer became fed up. When the amateur visited him to hear what the cryptographer thought, the cryptographer put three envelopes face down on the table. "In each of these envelopes is an attack against your cipher. Take one and read it. Don't come back until you've discovered the other two attacks." The amateur was never heard from again.
使用 AES。