Maxon Developers Maxon Developers
    • Documentation
      • Cinema 4D Python API
      • Cinema 4D C++ API
      • Cineware API
      • ZBrush Python API
      • ZBrush GoZ API
      • Code Examples on Github
    • Forum
    • Downloads
    • Support
      • Support Procedures
      • Registered Developer Program
      • Plugin IDs
      • Contact Us
    • Categories
      • Overview
      • News & Information
      • Cinema 4D SDK Support
      • Cineware SDK Support
      • ZBrush 4D SDK Support
      • Bugs
      • General Talk
    • Recent
    • Tags
    • Users
    • Login

    License Algorythm

    Scheduled Pinned Locked Moved SDK Help
    15 Posts 0 Posters 1.4k Views
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • H Offline
      Helper
      last edited by

      THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

      On 01/03/2011 at 18:46, xxxxxxxx wrote:

      Not much work at all.  There are some minor modifications between Windows and MacOS but that is about it.

      1 Reply Last reply Reply Quote 0
      • H Offline
        Helper
        last edited by

        THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

        On 01/03/2011 at 21:58, xxxxxxxx wrote:

        Yeah, of course. But I just want to avoid that everybody needa the same license, or the license process does not work in some kind of way. And I want My plugij beeing compatible with only one c4d license.
        Thanks emberintherain. I'll try that. What, if there comes out a float ? If i want to recalculate the serial back to the license, to compare if it's right, it might not be exactly the right result, because of the integer conversion ? 😮

        Is rijandael a program ? How did you build it into your plugin ?

        Thanks, nux 🙂

        1 Reply Last reply Reply Quote 0
        • H Offline
          Helper
          last edited by

          THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

          On 02/03/2011 at 08:40, xxxxxxxx wrote:

          Rijndael is just an encryption/decryption algorithm.  You can find source code online in many programming languages.

          1 Reply Last reply Reply Quote 0
          • H Offline
            Helper
            last edited by

            THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

            On 04/03/2011 at 12:12, xxxxxxxx wrote:

            Hm, actually couldn't find something like a calculation ? 😊
            Or how is it actually done ? I couldn't understand what Wikipedia said, my knowledge is not that good I think.

            I don't think my Plugin is that Super-Duper that everyone wants it and somebody tries to crack it. 😂
            I just want to make sure that everyone recives another license.

            So it would really be enough to make a calculation like this ?

              
            //dgt: last 5 numbers of serial  
              
            serial = dgt*123  
              
            dgt = serial/123  
            

            Just for example ?
            In a bit more complex way, nobody would  get the way of calculating it, right ?

            But what if there comes out a float ? I can't let the user Type in a long float number. 😕

            1 Reply Last reply Reply Quote 0
            • H Offline
              Helper
              last edited by

              THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

              On 04/03/2011 at 12:24, xxxxxxxx wrote:

              yes that would work.  You might want to make the algorithm a little bit more complicated than that..  Lol  just so it's not quite so easy to make a serial gen for it.   🙂   Shawn

              1 Reply Last reply Reply Quote 0
              • H Offline
                Helper
                last edited by

                THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

                On 04/03/2011 at 12:32, xxxxxxxx wrote:

                Hehe ok, thanks. 😉

                But, i now tried something like this:

                var ser = SysGetUserInfo(0);  
                ser = evaluate(strmid(ser,6,5));  
                var lc = ser*(pow(ser/10000,2));  
                  
                println(lc);
                

                The problem is, there comes out a float with decimals .. How to solve that ? If i don't want the User to type in decimals, the recalculation will not deliver the right result. I would need a tolerance ?! 😠

                // OMG 😄😄😂

                I could just use exactly this algorythm again and then comapre theese numbers ^^
                Thanks haha 😄

                1 Reply Last reply Reply Quote 0
                • H Offline
                  Helper
                  last edited by

                  THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

                  On 04/03/2011 at 12:48, xxxxxxxx wrote:

                  I think if you make it a LONG or an int..  there will be no decimals

                  🙂

                  ~Shawn

                  1 Reply Last reply Reply Quote 0
                  • H Offline
                    Helper
                    last edited by

                    THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

                    On 05/03/2011 at 03:21, xxxxxxxx wrote:

                    Originally posted by xxxxxxxx

                    I think if you make it a LONG or an int..  there will be no decimals:)~Shawn

                    Unfortunately you can't do that in COFFEE (the example given was in COFFEE) because it doesn't have variable typing. You'd have to use C++.

                    In any case, no matter what you do they'll break it. All you need is a simple algorithm that ensures legit users get their own license - just to remove the temptation to share it with others, really. The real black hats can break any protection. They even broke Vray for C4D, which uses a commercial protection system that's supposed to be pretty good.

                    1 Reply Last reply Reply Quote 0
                    • H Offline
                      Helper
                      last edited by

                      THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

                      On 05/03/2011 at 04:44, xxxxxxxx wrote:

                      LOL..  sorry I think in C++..  🙂  But yeah definitely don't bend over backward to do this because those wonderful crackers out there have nothing better to do than to crack it..  So they will do it no matter what you do.  So simple is better..   I agree.  🙂

                      ~Shawn

                      1 Reply Last reply Reply Quote 0
                      • H Offline
                        Helper
                        last edited by

                        THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

                        On 05/03/2011 at 14:17, xxxxxxxx wrote:

                        Works pretty fine now, thanks for your help !
                        Yeah, it's just some caclulation with some of the digits of the c4d serial. As you all said, if they really want to crack it, they will do. So my aim was just, that it won't be too easy to get an illegal license for my Plugin.

                        Thanks to you all for the help

                        PS: Just an *example* of how I'm doing it, maybe someone reading this did still not understand it:

                          
                        // Private Function for you as developer to create a license.   
                        // Overload the customers license as a String   
                        CreateLicense(ser) {   
                            ser = int(evaluate(strmid(ser,6,5)));   
                            var license = Modulo(pow(ser/92732,3),81638);   
                            return license;   
                        }   
                          
                        // CheckLicense creates a license the same way as CreateLicense and compares it with the   
                        // Plugin License entered by the user   
                        CheckLicense(lc) {   
                            var ser = SysGetUserInfo(0);   
                            var rightlicense = CreateLicense(ser);   
                            if(rightlicense != lc) return false;   
                            return true;   
                        }   
                        
                        1 Reply Last reply Reply Quote 0
                        • First post
                          Last post