আমি আমার সি # অ্যাপ্লিকেশনটির জন্য কীভাবে একটি পণ্য কী তৈরি করতে পারি?
আমার বার্ষিক আপডেট হওয়া একটি পণ্য (বা লাইসেন্স) কী তৈরি করতে হবে। অতিরিক্তভাবে ট্রায়াল সংস্করণগুলির জন্য আমার একটি তৈরি করা প্রয়োজন।
সম্পর্কিত:
আমি আমার সি # অ্যাপ্লিকেশনটির জন্য কীভাবে একটি পণ্য কী তৈরি করতে পারি?
আমার বার্ষিক আপডেট হওয়া একটি পণ্য (বা লাইসেন্স) কী তৈরি করতে হবে। অতিরিক্তভাবে ট্রায়াল সংস্করণগুলির জন্য আমার একটি তৈরি করা প্রয়োজন।
সম্পর্কিত:
উত্তর:
আপনি কোনও অ্যাপ্লিকেশনটিতে প্রমাণীকরণ করতে চান এমন ডেটা রয়েছে এমন একটি রেকর্ড তৈরির মতো কিছু করতে পারেন। এটিতে আপনার পছন্দসই কিছু অন্তর্ভুক্ত থাকতে পারে - যেমন সক্ষম করার জন্য প্রোগ্রাম বৈশিষ্ট্য, মেয়াদ শেষ হওয়ার তারিখ, ব্যবহারকারীর নাম (যদি আপনি এটি কোনও ব্যবহারকারীর সাথে আবদ্ধ করতে চান)। তারপরে এনক্রিপ্ট করুন যে কোনও নির্দিষ্ট কী বা হ্যাশ দিয়ে কিছু ক্রিপ্টো অ্যালগরিদম ব্যবহার করে। তারপরে আপনি এটি কেবল আপনার প্রোগ্রামের মধ্যে যাচাই করুন। লাইসেন্স ফাইলটি (উইন্ডোজগুলিতে) বিতরণ করার একটি উপায় হ'ল এটি এমন একটি ফাইল হিসাবে সরবরাহ করা যা রেজিস্ট্রি আপডেট করে (ব্যবহারকারী এটি টাইপ করে সংরক্ষণ করে) updates
নিরাপত্তার মিথ্যা অনুভূতি সম্পর্কে সতর্ক থাকুন - খুব শীঘ্রই বা কেউ এই চেকটি এড়াতে আপনার প্যাচটি সহজেই প্যাচ করবে এবং প্যাচ করা সংস্করণটি বিতরণ করবে। অথবা, তারা এমন একটি কী তৈরি করে যা সমস্ত চেক পাস করে এবং এটিকে বিতরণ করে, বা ঘড়ির পিছনে পিছনে ফেলে দেয় ইত্যাদি It আপনি আপনার স্কিমটি কতটা বিশৃঙ্খলাবদ্ধ করেন তা বিবেচনাধীন নয়, এর জন্য আপনি যা কিছু করেন তা অবশেষে অস্পষ্টতার মাধ্যমে সুরক্ষিত হবে এবং তারা সর্বদা থাকবে এটি করতে সক্ষম হন। এমনকি যদি তারা কেউ নাও পারে, এবং হ্যাক সংস্করণ বিতরণ করবে। আপনি যদি কোনও ডিঙ্গেল সরবরাহ করেন তবে একই জিনিস প্রয়োগ করা হয় - যদি কেউ চায় তবে তারা তার চেকটিও প্যাচ করতে পারে। ডিজিটালি আপনার কোড স্বাক্ষর করতে সাহায্য করবে না, তারা সেই স্বাক্ষরটি সরিয়ে ফেলতে পারে, বা এটিকে পদত্যাগ করতে পারে।
আপনি কোনও ডিবাগার ইত্যাদিতে প্রোগ্রাম চালানো রোধ করতে কৌশলগুলি ব্যবহার করে কিছুটা জটিল করতে পারেন, তবে এটি বুলেট প্রুফও নয়। সুতরাং আপনার কেবল এটি যথেষ্ট কঠিন করা উচিত যে কোনও সৎ ব্যবহারকারী অর্থ প্রদান করতে ভুলে যায় না। আপনার স্কিমটি অর্থ প্রদানকারী ব্যবহারকারীদের পক্ষে বাধা সৃষ্টি না হওয়ার বিষয়ে খুব সাবধানতা অবলম্বন করুন - আপনার অর্থপ্রদানকারী গ্রাহকরা যা প্রদান করেছেন তার ব্যবহার করতে না পারার চেয়ে কিছুটা অনুলিপি ছিটিয়ে দেওয়া ভাল।
আরেকটি বিকল্প হ'ল একটি অনলাইন চেক - কেবলমাত্র ব্যবহারকারীকে একটি অনন্য আইডি সরবরাহ করুন এবং সেই আইডিটির কী কী ক্ষমতা থাকতে হবে তা অনলাইনে পরীক্ষা করুন এবং কিছু সময়ের জন্য এটি ক্যাশে করুন। সমস্ত একই সতর্কতা প্রয়োগ করা হয় - লোকেরা এ জাতীয় কিছু পেতে পারে।
তাদের কীগুলি ভুলে গেছে এমন ব্যবহারকারীদের সাথে ডিল করার জন্য সহায়তা ব্যয়গুলিও বিবেচনা করুন etc.
সম্পাদনা করুন: আমি কেবল যুক্ত করতে চাই, এতে খুব বেশি সময় বিনিয়োগ করবেন না বা ভাবেন যে কোনওভাবে আপনার সংশ্লেষিত স্কিমটি ভিন্ন এবং অকার্যকর হবে। এটি হবেনা এবং যতক্ষণ না লোকেরা হার্ডওয়্যার এবং ওএস আপনার প্রোগ্রামটি চালিত করে ততক্ষণ নিয়ন্ত্রণ করতে পারে না। বিকাশকারীরা এর জন্য আরও জটিল স্কিম নিয়ে আসার চেষ্টা করছেন, তারা এই ভেবেছিল যে তারা যদি এর জন্য তাদের নিজস্ব সিস্টেম বিকাশ করে তবে এটি কেবল তাদেরই জানা থাকবে এবং তাই 'আরও সুরক্ষিত'। তবে এটি সত্যই চিরস্থায়ী মোশন মেশিন তৈরির চেষ্টা করার সমতুল্য। :-)
আপনি কার উপর ভরসা করেন?
আপনার অ্যাপ্লিকেশনটির রানটাইম সুরক্ষা পরিচালনার জন্য আমি কোনও তৃতীয় পক্ষকে বিশ্বাস করার জন্য এই অঞ্চলটিকে সর্বদা অত্যন্ত গুরুত্বপূর্ণ বলে বিবেচনা করেছি। একবারে কোনও অ্যাপ্লিকেশনের জন্য সেই উপাদানটি ক্র্যাক হয়ে গেলে, সমস্ত অ্যাপ্লিকেশনের জন্য এটি ক্র্যাক হয়ে যায়। তারা 3 ডি ম্যাক্সের জন্য তৃতীয় পক্ষের লাইসেন্স সলিউশনের সাথে একবার গেলে পাঁচ মিনিটের মধ্যে বিচক্ষণতার সাথে তা ঘটেছিল বছর আগে বছর আগে ... ভাল সময়!
গুরুতরভাবে, আপনার অ্যালগরিদমের উপর সম্পূর্ণ নিয়ন্ত্রণ রাখার জন্য নিজের ঘূর্ণায়মান বিবেচনা করুন। যদি আপনি তা করেন তবে আপনার কীতে থাকা উপাদানগুলি এর লাইনের সাথে ব্যবহার করে বিবেচনা করুন:
তারপরে এটিকে নরকে চেকসাম করুন এবং ক্র্যাক করা আরও শক্ত করার জন্য আপনি যা চান (বিপরীতযোগ্য) এনক্রিপশন যুক্ত করুন।
একটি ট্রায়াল লাইসেন্স কী তৈরি করতে, কেবলমাত্র উপরোক্ত মানগুলির জন্য "ট্রায়াল মোড" হিসাবে অনুবাদ করা মানগুলি সেট করুন।
এবং যেহেতু এখন এটি সম্ভবত আপনার অ্যাপ্লিকেশন / সংস্থার সবচেয়ে গুরুত্বপূর্ণ কোড, অবহেলার পরিবর্তে / পরিবর্তে একটি স্থানীয় ডিএলএল ফাইলটিতে ডিক্রিপ্ট রুটিনগুলি রাখার বিষয়ে বিবেচনা করুন এবং কেবল পি / ইনভোক করুন।
আমি বেশ কয়েকটি সংস্থার জন্য কাজ করেছি তারা এ জন্য সাধারণ সাফল্য অর্জন করেছে success অথবা হতে পারে পণ্যগুলি ক্র্যাকিংয়ের পক্ষে মূল্যবান ছিল না;)
আপনি যদি উইন্ডোজ পণ্য কীগুলির মতো টাইপ করতে পারেন এমন কীগুলি সম্পর্কে জিজ্ঞাসা করছেন তবে সেগুলি কয়েকটি পরীক্ষার উপর ভিত্তি করে। যদি আপনি কীগুলির বিষয়ে কথা বলছেন যা আপনার কপি করতে হবে পেস্ট, তবে সেগুলি ডিজিটাল স্বাক্ষর (প্রাইভেট কী এনক্রিপশন) এর উপর ভিত্তি করে।
একটি সাধারণ প্রোডাক্ট কী যুক্তি দিয়ে বলা যেতে পারে যে পণ্য কীটি চারটি-অঙ্কের চারটি গ্রুপের মতো থাকে abcde-fghij-kljmo-pqrst
, এবং এর পরে অভ্যন্তরীণ সম্পর্কগুলি নির্দিষ্ট করতে f + k + p এর সমান হওয়া উচিত, যার অর্থ 2 এর প্রথম সংখ্যাগুলি , 3 এবং 4 গোষ্ঠীর মোট ক। এর অর্থ হল 8XXX-2XXXX-4xxxx-2xxxx বৈধ, তাই 8XXXX-1xxxx-0xxxx-7xxxx। অবশ্যই, অন্যান্য সম্পর্কের পাশাপাশি জটিল সম্পর্কগুলিও থাকবে যেমন, যদি প্রথম দলের দ্বিতীয় সংখ্যাটি বিজোড় হয়, তবে শেষ গ্রুপের শেষ অঙ্কটিও বিজোড় হওয়া উচিত। এইভাবে পণ্য কীগুলির জন্য জেনারেটর এবং পণ্য কীগুলির যাচাইকরণ কেবলমাত্র এটি সমস্ত নিয়মের সাথে মেলে কিনা তা পরীক্ষা করে দেখতে পারে।
এনক্রিপশনটি সাধারণত ব্যক্তিগত কী (== ডিজিটালি স্বাক্ষরিত) ব্যবহার করে এনক্রিপ্ট করা লাইসেন্স সম্পর্কে তথ্যের স্ট্রিং থাকে এবং এতে রূপান্তরিত হয় বেস 64 এ । অ্যাপ্লিকেশন সহ পাবলিক কী বিতরণ করা হয়। যখন বেস 64 স্ট্রিংটি আসে, এটি পাবলিক কী দ্বারা যাচাই করা হয় (== ডিক্রিপ্ট করা) এবং যদি বৈধ বলে মনে হয় তবে পণ্যটি সক্রিয় করা হয়।
এটি তুচ্ছ বা ক্র্যাক করা শক্ত হোক না কেন, আমি নিশ্চিত নই যে এটি আসলেই অনেক বেশি পার্থক্য নিয়েছে।
আপনার অ্যাপ্লিকেশনটি ক্র্যাক হওয়ার সম্ভাবনা পণ্যের কী হ্যান্ডলিংয়ের শক্তির চেয়ে বরং তার উপযোগের সাথে আনুপাতিক।
ব্যক্তিগতভাবে, আমি মনে করি ব্যবহারকারীর দুটি শ্রেণি রয়েছে। যারা বেতন দেয়। যারা না। যেগুলি এটি করবে সম্ভবত এটি সবচেয়ে তুচ্ছ সুরক্ষা দিয়েও করবে। যারা ফাটলের জন্য অপেক্ষা করবেন না বা অন্য কোথাও তাকাবেন না। যেভাবেই হোক, এটি আপনাকে আর কোনও অর্থ পাবে না।
আমাকে স্বীকার করতে হবে আমি বরং উন্মাদ কিছু করব।
যখন তারা লাইসেন্সচেক সন্ধান করে এবং অপসারণ করে, যখন ডিএলএল বিভাগ বিভাজন শুরু করে তখন কী মজা অনুসরণ করবে ।
সেখানে বিকল্প মাইক্রোসফট সফটওয়্যার লাইসেন্সিং এবং সুরক্ষা (SLP) সার্ভিস হিসাবে ভাল। এটি পড়ার পরে আমি সত্যিই চাই যে আমি এটি ব্যবহার করতে পারি।
আমি লাইসেন্সের ভিত্তিতে কোডের কিছু অংশ ব্লক করার ধারণাটি পছন্দ করি। হট স্টাফ এবং। নেট জন্য সর্বাধিক সুরক্ষিত। আকর্ষণীয় পড়ুন এমনকি যদি আপনি এটি ব্যবহার না করেন!
মাইক্রোসফ্ট ® সফ্টওয়্যার লাইসেন্সিং এবং প্রোটেকশন (এসএলপি) পরিষেবাদি একটি সফ্টওয়্যার অ্যাক্টিভেশন পরিষেবা যা স্বাধীন সফ্টওয়্যার বিক্রেতাদের (আইএসভি) তাদের গ্রাহকদের জন্য নমনীয় লাইসেন্সিং শর্তাদি গ্রহণ করতে সক্ষম করে। মাইক্রোসফ্ট এসএলপি পরিষেবাদি একটি অনন্য সুরক্ষা পদ্ধতি নিয়োগ করে যা আপনার অ্যাপ্লিকেশন এবং লাইসেন্সিং তথ্যের সুরক্ষায় সহায়তা করে যা গ্রাহকের সম্মতি বাড়ানোর সময় আপনাকে দ্রুত বাজারে যেতে দেয়।
দ্রষ্টব্য: সংবেদনশীল কোড (যেমন একটি মূল্যবান অ্যালগরিদম) সহ আমি এই পণ্যটি প্রকাশ করতে পারি way
আপনি যদি কেবল সিরিয়াল নম্বর তৈরি ও যাচাই করার জন্য একটি সহজ সমাধান চান তবে উপবৃত্তাকারী চেষ্টা করুন । এটি উপবৃত্তাকার কার্ভ ক্রিপ্টোগ্রাফি ব্যবহার করে এবং এর একটি "মেয়াদোত্তীকরণের তারিখ" বৈশিষ্ট্য রয়েছে যাতে আপনি পরীক্ষার ভেরিসন বা সময়-সীমাবদ্ধ রেজিস্ট্রেশন কী তৈরি করতে পারেন।
পণ্য কী এবং অ্যাক্টিভেশনগুলির জন্য আরেকটি ভাল সস্তা সরঞ্জাম হ'ল ইনস্টলকি নামে পরিচিত একটি পণ্য। Www.lomacons.com এ একবার দেখুন
একটি সহজ পদ্ধতি হ'ল গ্লোবালি ইউনিক আইডেন্টিফায়ার (জিইউডি) ব্যবহার করা। জিইউইডিগুলি সাধারণত 128-বিট মান হিসাবে সংরক্ষণ করা হয় এবং সাধারণত হাইফেন দ্বারা বিভাজিত গ্রুপগুলির সাথে 32 টি হেক্সাডেসিমাল অঙ্ক হিসাবে প্রদর্শিত হয় {21EC2020-3AEA-4069-A2DD-08002B30309D}
।
সি # তে নিম্নলিখিত কোডটি ব্যবহার করুন System.Guid.NewGuid()
।
getKey = System.Guid.NewGuid().ToString().Substring(0, 8).ToUpper(); //Will generate a random 8 digit hexadecimal string.
_key = Convert.ToString(Regex.Replace(getKey, ".{4}", "$0/")); // And use this to separate every four digits with a "/".
আমি আসা করি এটা সাহায্য করবে.
কৌশলটি এমন একটি অ্যালগরিদম রয়েছে যা কেবলমাত্র আপনি জানেন (যেমন এটি অন্য প্রান্তে ডিকোড করা যেতে পারে)।
সাধারণ জিনিস রয়েছে যেমন "একটি প্রধান সংখ্যা বাছাই করুন এবং এতে একটি যাদু নম্বর যুক্ত করুন"
আরও কনভোলটেড বিকল্পগুলি যেমন বাইনারি ডেটার একটি সেট (যা একটি অনন্য শনাক্তকারী, সংস্করণ নম্বর, ইত্যাদি অন্তর্ভুক্ত করতে পারে) এর অ্যাসিম্যাট্রিক এনক্রিপশন ব্যবহার করে এবং এনক্রিপ্ট হওয়া ডেটা কী হিসাবে বিতরণ করে।
এই প্রশ্নের প্রতিক্রিয়াগুলিও পড়ার মতো হতে পারে
এর জন্য কিছু সরঞ্জাম এবং এপিআই উপলব্ধ রয়েছে। যাইহোক, আমি মনে করি না আপনি একটি নিখরচায় খুঁজে পাবেন;)
ওলিকেন্স স্যুট উদাহরণস্বরূপ রয়েছে: http://www.olicense.de/index.php?lang=en
আপনি না পরীক্ষা করতে LicenseSpot । এটি উপলব্ধ করা হয়:
আমি @ ফ্র্যাঙ্কোডোয়ারের দুর্দান্ত উত্তরে কিছুটা পিগিব্যাক করতে যাচ্ছি এবং অনলাইন-ভিত্তিক লাইসেন্সিংয়ের জন্য আরও গভীর গতিতে খনন করছি। আমি কীজেনের প্রতিষ্ঠাতা, বিকাশকারীদের জন্য নির্মিত একটি লাইসেন্সিং REST এপিআই।
যেহেতু আপনি আপনার আবেদনের জন্য 2 "ধরণের" লাইসেন্সের অর্থাত্ একটি "সম্পূর্ণ সংস্করণ" এবং "পরীক্ষামূলক সংস্করণ" চান বলে উল্লেখ করেছেন, তাই আমরা এটিকে আরও সহজ করে তুলতে পারি এবং যেখানে আপনি আপনার অ্যাপ্লিকেশনটির নির্দিষ্ট বৈশিষ্ট্যগুলি লাইসেন্স করেন সেখানে একটি বৈশিষ্ট্য লাইসেন্স মডেল ব্যবহার করতে পারি (এই ক্ষেত্রে, এখানে একটি "পূর্ণ" বৈশিষ্ট্য-সেট এবং একটি "ট্রায়াল" বৈশিষ্ট্য-সেট) রয়েছে।
শুরু করার জন্য, আমরা 2 লাইসেন্স ধরণের তৈরি করতে পারি ( কীজেনে নীতিমালা নামে পরিচিত ) এবং যখনই কোনও ব্যবহারকারী কোনও অ্যাকাউন্ট নিবন্ধন করে আপনি তাদের শুরু করার জন্য একটি "ট্রায়াল" লাইসেন্স তৈরি করতে পারেন ("ট্রায়াল" লাইসেন্সটি আমাদের "ট্রায়াল" বৈশিষ্ট্য নীতি প্রয়োগ করে ) যা আপনি অ্যাপের মধ্যে বিভিন্ন চেক করতে ব্যবহার করতে পারেন যেমন ব্যবহারকারীরা ট্রায়াল-ফিচার-এ এবং ট্রায়াল-ফিচার-বি ব্যবহার করতে পারেন ।
এবং এটির ভিত্তিতে, যখনই কোনও ব্যবহারকারী আপনার অ্যাপটি কিনেছেন (আপনি পেপাল, স্ট্রাইপ ইত্যাদি ব্যবহার করছেন), আপনি "পূর্ণ" বৈশিষ্ট্য নীতি প্রয়োগকারী একটি লাইসেন্স তৈরি করতে পারেন এবং এটি ব্যবহারকারীর অ্যাকাউন্টের সাথে সংযুক্ত করতে পারেন । এখন আপনার অ্যাপ্লিকেশনটির মধ্যে আপনি ব্যবহারকারীর প্রো-ফিচার-এক্স এবং প্রো-ফিচার-ওয়াই করতে পারেন ( এমন কোনও কিছু করে) কি "পূর্ণ" লাইসেন্স রয়েছে তা পরীক্ষা করতে পারেন user.HasLicenseFor(FEATURE_POLICY_ID)
।
আমি আপনার ব্যবহারকারীদের ব্যবহারকারী অ্যাকাউন্ট তৈরি করার অনুমতি দেওয়ার কথা উল্লেখ করেছি - এর অর্থ কী? আমি এই সম্পর্কে আরও কয়েকটি উত্তর নিয়ে বিস্তারিতভাবে গিয়েছি , তবে আমি কেন আপনার ব্যবহারকারীদের প্রমাণীকরণ ও সনাক্ত করার জন্য এটি সর্বোত্তম উপায় বলে মনে করি তাড়াতাড়ি রুনডাউন:
অবশ্যই, যদি আপনি ব্যবহারকারীর অ্যাকাউন্টগুলি পরিচালনা করতে না চান এবং আপনি আপনার ব্যবহারকারীদের লাইসেন্স কীগুলি ইনপুট করতে চান তবে এটি সম্পূর্ণ জরিমানা (এবং কীজেন সেটিও সমর্থন করে )। আমি লাইসেন্সের সেই দিকটি পরিচালনা করার জন্য আরও একটি উপায় দিচ্ছি এবং আশা করি আপনার গ্রাহকদের জন্য একটি সুন্দর ইউএক্স সরবরাহ করব।
অবশেষে যেহেতু আপনি এও উল্লেখ করেছেন যে আপনি এই লাইসেন্সগুলি বার্ষিক আপডেট করতে চান, আপনি আপনার নীতিগুলিতে একটি সময়সীমা নির্ধারণ করতে পারেন যাতে "পূর্ণ" লাইসেন্সগুলি এক বছরের পরে শেষ হবে এবং "ট্রায়াল" লাইসেন্সগুলি সর্বশেষে 2 সপ্তাহ বলে, আপনার ব্যবহারকারীরা একটি নতুন কেনার প্রয়োজন হয় মেয়াদ শেষ হওয়ার পরে লাইসেন্স।
আমি আরও খনন করতে পারি, ব্যবহারকারীর সাথে মেশিনগুলিতে যোগ দিতে এবং সেই জাতীয় জিনিসের সাথে যুক্ত হতে পারি, তবে আমি ভেবেছিলাম যে আমি এই উত্তরটি সংক্ষিপ্ত রাখার চেষ্টা করব এবং আপনার ব্যবহারকারীদের জন্য কেবল লাইসেন্সিং বৈশিষ্ট্যগুলিতে ফোকাস করব।
দয়া করে এই উত্তরটি দেখুন: https://stackoverflow.com/a/38598174/1275924
ধারণাটি হ'ল ক্রিপটোলেন্সকে লাইসেন্স সার্ভার হিসাবে ব্যবহার করা । এখানে ধাপে ধাপে উদাহরণ রয়েছে (সি # এবং ভিবি.এনইটি তে)। আমি নীচে কী যাচাইয়ের জন্য একটি কোড স্নিপেট সংযুক্ত করেছি (সি # তে):
var licenseKey = "GEBNC-WZZJD-VJIHG-GCMVD";
var RSAPubKey = "{enter the RSA Public key here}";
var auth = "{access token with permission to access the activate method}";
var result = Key.Activate(token: auth, parameters: new ActivateModel()
{
Key = licenseKey,
ProductId = 3349,
Sign = true,
MachineCode = Helpers.GetMachineCode()
});
if (result == null || result.Result == ResultType.Error ||
!result.LicenseKey.HasValidSignature(RSAPubKey).IsValid())
{
// an error occurred or the key is invalid or it cannot be activated
// (eg. the limit of activated devices was achieved)
Console.WriteLine("The license does not work.");
}
else
{
// everything went fine if we are here!
Console.WriteLine("The license is valid!");
}
Console.ReadLine();