-1

私はこれを投稿するのは本当にばかげていますが、私の質問に対する答えがなく、私はまだジュニアプログラマーなので、これを投稿します:

        //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;

ご覧のとおり、この4バイトの配列とRNG暗号化から生成された8バイトを生成します。シリアルを確認する場合は、最後の4バイトを取得し、それらの間の数学的関係を使用して、多くのシリアルを生成します。それらが有効かどうかを確認できます。私はおそらく非常に悪いセキュリティを備えたかなり古い方法を知っているので、誰かが私を助けたり、私のコードに何かを追加したり、何か新しいことを提案したりできるなら、私は本当に感謝します。

4

1 に答える 1

1

誰かがここであなたのコードを分析するかどうかはわかりません。次のことをお勧めします。ソフトウェア保護を複雑にしすぎないでください。違法コピーには大きな影響はありませんが、ソフトウェアを購入した人には100%影響します。ソフトウェア保護メカニズムを可能な限りシンプルに保ちます。

于 2011-10-04T11:07:50.603 に答える