プロが教えるわが家の防犯対策術!

以前ソフトウェアを公開しようと思ってソフトウェアを作っています。シェアウェアを目標に作っています。でもどうやって試用版の機能制限や登録用フォームを作ったらいいのかわかりません。だれか教えて下さい。

A 回答 (3件)

原理的には同じことですが、チェックデジットの桁が少ないとまぐれ当たりに可能性が高くなります。

また、スクランブルの方法としてEXORを使ったものは、比較的推測しにくいものです。
サンプルとして16進4桁のシリアルを発行したり、試験するプログラムを書きました。
#include <stdio.h>
#include <stdlib.h>

#define CRYPT 0xdeadface

int serialchk(int32_t serial)
{
int16_t upper, lower;

serial ^= CRYPT;
upper = serial >> 16;
lower = serial & 0xffff;

return(upper == lower);
}

int32_t mkserial(int16_t lower)
{
int32_t serial;

serial = lower << 16 | lower;
serial ^= CRYPT;

return (serial);
}

char *prog;

void
usage(void)
{
fprintf(stderr, "%s m|t strings\n",prog);
fprintf(stderr, "\tm: make key\n");
fprintf(stderr, "\tt: test key\n");
fprintf(stderr, "\tstrings: hex-dec number\n");
exit(1);
}

int main(int argc, char *argv[])
{
int serial;

prog = argv[0];

if (argc < 3) {
usage();
}
sscanf(argv[2], "%x", &serial);
switch(argv[1][0]) {
case 'm':
serial = mkserial(serial & 0xffff);
printf("%08x\n", serial);
break;
case 't':
printf("%s\n", serialchk(serial) ? "OK":"NG");
break;
default:
usage();
}
return 0;
}
    • good
    • 0

シリアルでしたか


そうですね。簡単なものでよければですが。。。
今回は数字だけを使うものとします。(文字列でも考え方は同じようなものです。

まずはじめに適当な数字を決めます。
通し番号でも良いし日付を使うのも良いです。
今回は日付を使いましょう。
2005年12月11日18時46分(現在時刻)
これを「200512111846」という数字にします。
次にこれらの数字一つ一つに適当な数字をかけていきます。
2 0 0 5 1 2 1 1 1 8 4 6
* * * * * * * * * * * *
5 7 1 4 9 7 0 2 0 4 6 2
こんな感じです。これらを計算していくと
10,0,0,20,9,14,0,2,0,32,24,12となります。(たぶん)
これらの数字を足していきます。
すると123となります。(きれいに並んでますねw
これを9で割ってあまりを出します。
6になります。(たぶん)
そしたら最初に作った数字「200512111846」の後ろでも前でも好きなところに入れます。今回は前に入れることにしましょう。
「6200512111846」
これがシリアルキーとなります
この6はチェックサムといいシリアルキーがあっているか否かを調べるのに使います。
つまりプログラム側で「200512111846」を元にチェックサムを作って入力されたものと同じならばそれは正しいと判断します。
しかし違えばそれは偽者だということです。
文字列を使う場合はそれぞれの文字を数字に変換すればいいのです。
aなら1Bなら2というかんじで
最初にチェックサムは何文字目に入れるのか(通常は一番最初か最後)
各数字に書ける数
これらを決めておけば結構簡単にできるのではないかと思います。
    • good
    • 1
この回答へのお礼

長文での説明ありがとうございます。いろいろと参考になることがありました。これを活用してみたいと思います。

お礼日時:2005/12/13 17:02

機能制限はその機能を使おうとしたときに登録が済んでいるかどうか確認して、していなければ止めるなりすれば良いです。


フォームってどっちのフォームですか?Web?それともプログラム?
プログラムならテキストボックスを一つ入れれば良いでしょう。
Webでも同じなわけですが必要事項を書き込むテキストボックスをつければ良いだけです。
個人的にはメールのほうがらくだと思いますがね

それとも仕組み(シリアルキーなど)についての質問ですか?
質問の仕方からしてこのようなことだと思ったのですが
    • good
    • 0
この回答へのお礼

質問の仕方がわかりにくかったようですね。すみません。これはシリアルキーについての質問です。早速のご回答ありがとうございます。

お礼日時:2005/12/10 11:06

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!