密钥生成方法?
问题描述:
我真的觉得自己很蠢张贴这一点,但因为我得到了我的问题没有答案,我仍然初级程序员,我会发布此:密钥生成方法?
//List of keys
byte[] Key0 = { 10, 20, 30, 40, 50, 60, 70, 80, 90, 100 }; //mode 10 = 0
byte[] Key1 = { 1, 3, 5, 7, 9, 11, 13, 15, 17, 19 }; // i + 2
byte[] Key2 = { 2, 4, 6, 8, 10, 12, 14, 16, 18, 20 }; // i mode 2 = 0
byte[] Key3 = { 66, 77, 88, 99, 111, 222, 110, 112, 114, 115 }; // mode 11 = 0
byte[] Key4 = { 1, 4, 9, 16, 25, 36, 49, 64, 81, 100, 121 }; //x^2
byte[] Key5 = { 6,17,34,57,86,121,162,209 }; //3x^2+2x+1
byte[] Key6 = { 77,78,79,80,81,82,83,84,85,86,87 }; // only in range
//Add all keys to the list
List<byte[]> oKeysList = new List<byte[]>();
oKeysList.Add(Key0);
oKeysList.Add(Key1);
oKeysList.Add(Key2);
oKeysList.Add(Key3);
oKeysList.Add(Key4);
oKeysList.Add(Key5);
oKeysList.Add(Key6);
Random oRandom = new Random();
//Generate random key index to be used in the encryption
int ListSelectedIndex = oRandom.Next(0, oKeysList.Count);
byte[] GeneratedKey = oKeysList[ListSelectedIndex];
//Generate 3 random number from the selected key and concate the key index to it
byte[] GeneratedBytes = new byte[4];
for (int i = 0; i < 3; i++)
{
GeneratedBytes[i] = GeneratedKey[oRandom.Next(0,GeneratedKey.Length)];
}
//Add the list of key index
GeneratedBytes[3] = (byte)ListSelectedIndex;
//Return the genreated bytes
return GeneratedBytes;
正如你看到我和一个8个字节一起生成此4字节数组从RNG密码学生成,当我想检查我的序列我采取最后4个字节,并使用它们之间的数学关系,我想生成很多连续并能够检查它们是否有效。我知道它的安全性可能很老,所以如果有人能够帮助我或为我的代码添加任何东西,或者建议任何新的东西,我会非常感激。
答
我不确定任何人都会在这里分析你的代码。我建议如下:不要让软件保护过于复杂。它不会对盗版产生重大影响,但100%会影响购买软件的人。尽可能简化您的软件保护机制。
尝试http://codereview.stackexchange.com/ –
如果不知道您想要验证的内容以及原因,很难提供任何建议。 –