みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
Pages: 1
お世話になります。
レストランで発行するバウチャーの管理システムを構築します。
従業員がバウチャーのシリアルナンバーを入力すれば、該当する発行済みバウチャーのステータスが"USED"になる仕組みです。
入力ミスを防ぐ目的でシリアルナンバーにチェックサムを埋め込みたいのですが、チェックサムを生成するカスタム関数などはありますでしょうか?
シリアルナンバーに使用するのは数字のみで、
3桁(プレフィクス)-6桁(連番)-2桁(前9桁の数列から生成したチェックサム)
という形式を考えています。
よろしくお願いします。
Offline
チェックサムと言っても、バーコードなど規格で規定されている以外では、その計算方法はどんな計算でも良いので、自分で作らないといけないでしょう。最も簡単なものは、上の9桁の数字を適当な素数で割って、剰余を設定します。例えば97で割った剰余などでも良いのでは。
2桁のチェックサムですので、かなり厳重なもののようですが、どのような計算ですか。
Last edited by Shin (2018-02-01 10:51:25)
Offline
>Shinさん
チェックサムのアルゴリズムは自分で決めていいんですね。
逆に言えば、その信頼性の担保も自身で負わなければならない、と(2桁のチェックサムがどれほど厳重なのかも私には判断がつきません・・・)。
今考えたのが、
元の9桁の数列
↓
MD5にて16進数の数列にハッシュ化(GetContainerAttribute関数で上手くいきそう)
↓
16進数のハッシュ値を10進数に変更して、その任意の桁の数字を取り出してチェックサムとする
というやり方です。
この場合、取り出す数字の桁数が多ければ信頼性は高くなりますね。あまりスマートではないですが。
とりあえず、これでなんとかならないか調べてみます。
Offline
>Shinさん
返信してから気づきました。素数で割った剰余のやりかたを追記編集してくださっていますね。ありがとうございます。
私の構築しているシステムでは、そのやり方で十分な気がします。
解決済みとさせていただきます。
Offline
Pages: 1
[ Generated in 0.007 seconds, 9 queries executed - Memory usage: 554.93 KiB (Peak: 588.07 KiB) ]