問題タブ [luhn]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
6 に答える
23425 参照

javascript - クレジットカードのクライアント側の検証

ユーザーが[送信]をクリックする前にクレジットカードのチェックディジットを検証するためのライブラリまたはJavaScriptスニペットを持っている人はいますか?

0 投票する
5 に答える
630 参照

algorithm - メッセージコード検証のアルゴリズム

あなたが前にこのスレッドを読んだなら-私が書いたすべてを忘れてください、私がそれを書いたとき私は酔っていたに違いありません。最初からやり直します:

私は現在、ユーザー入力を検証するためにある種のアルゴリズムを使用するプロジェクトに取り組んでいます。考慮すべき3つのパーティがあります。

クライアント-私たちのウェブページを閲覧する

会社-私たちは、クライアントの要求を処理します

サードパーティ企業-クライアントメッセージの処理

私たちのウェブページでは、クライアントに製品に関するいくつかの情報を表示します。製品に関する詳細情報が必要な場合は、サードパーティの会社に連絡して製品コードを記載する必要があります(それ自体は一意ではありませんが、一般的でもありません)。その見返りとして、クライアントはサードパーティ企業から他のコードを受け取ります。このコードは、承認のためにコードを検証するWebページに入力する必要があります。

私たち会社がサードパーティ会社とのやり取りがなかった場合が最善です。純粋な暗号化は、長すぎる文字列を生成するため、画像から外れています。これはSMSで行っているため、コードは短くする必要があります。

私がこれまでに思いついたもの:

すべての製品について、ベース16(0-f)でいくらか一意のコードを生成します(一意であるかどうかは関係ありません)。製品に関する詳細情報が必要なクライアントは、製品コードを記載したSMSをサードパーティ企業に送信します。代わりに、クライアントは同じコードを受け取りますが、数字は乗算され(2倍になる可能性があります)、36進数に変換されます。さらに、コードに最後の文字である制御番号が追加され、コードがLuhnで有効になります。 36進数のアルゴリズム。ユーザーが受信したコードを入力すると、会社はサーバー側で製品コードに対して検証します(Luhnに対して検証し、2で除算して、16進数に戻します)。

これはかなり安全で適切に聞こえますか?2人が通信する必要がない場合に、3人がメッセージを送信する有効な方法ですか?

編集して申し訳ありませんが、最初の投稿を書いたとき、私の心は他の場所にあったに違いありません。

0 投票する
7 に答える
16286 参照

php - Luhnチェックサムの生成

Luhnチェックサムを検証するための実装はたくさんありますが、それらを生成するための実装はほとんどありません。私はこれに出くわしましたが私のテストではバグがあることが明らかになり、デルタ変数の背後にあるロジックを理解していません。

Luhnチェックサムを生成するはずのこの関数を作成しましたが、何らかの理由で、生成されたチェックサムが半分の時間無効であることをまだ理解していません。

いくつかの例:

生成されたチェックサムをこのページに対して検証していますが、ここで何が間違っていますか?


将来の参考のために、ここに仕事関数があります。

$ parity変数はこの目的には必要ないため、次のことを確認するために削除しました。

0 投票する
1 に答える
2532 参照

c# - Luhnチェック桁

チェックディジットコードの何が問題なのか理解できないようです。

時々、2つの長さのチェックディジット値を生成します

生成された番号はすべて有効です。http://www.ee.unb.ca/cgi-bin/tervo/luhn.pl?N= 127753224800013で確認できます。

コード:http ://dl.dropbox.com/u/678582/Email/GenerateAN.txt

0 投票する
6 に答える
720 参照

php - PHP クライアント PIN セキュリティ

私は現在、PIN「番号」を提供することで、クライアントが購入/更新/などの詳細を表示できる機能を備えたシステムを開発しています.

ターゲットとするクライアントのタイプのため、ログイン情報の代わりに PIN が使用されています。PIN は、送信された文書に印刷されています。

PIN を提供するときに表示されるビューには、クレジット カードなどの機密性の高い情報は表示されませんが、製品名、種類、価格、バーコード、修理などの機密性の低い情報は表示されません。

問題は PIN です。ランダムな 5 文字の PIN (0 ~ 9、az AZ) を使用することにしました - 大文字と小文字が区別されます。ホモグリフ(「I」、「1」、「l」、「0」、「O」、「rn」、「vv」) をいくつか削除するので、実際の組み合わせの数は実際には少なくなります。

これについていくつか質問があります。

  1. この慣行は受け入れられますか?
  2. 大量の試行が失敗した IP からのトラフィックを「禁止」するロックアウト メカニズムを作成する必要がありますか?*
  3. エラー チェック システムを作成する必要がありますか (Luhn のクレジット カード番号のアルゴリズムに似ています)。
  4. *キャプチャシステムを利用する必要がありますか?
0 投票する
2 に答える
4086 参照

javascript - JavaScript カード PAN チェック ディジット Luhn 検証

以下のリンクのコードを使用してクレジット カードの検証を試みましたが、フィールドに間違ったデータを送信してもアラートが表示されません。

Luhn チェックを実行する前にスペースを取り除く

私のフォームは次のとおりです。

多分私は間違ったコードを使用していますか?

0 投票する
4 に答える
47100 参照

javascript - カード番号からカードタイプを特定する

私はこのようなカードタイプの配列を持っています

ただし、idは、入力されたカード番号に応じてカードタイプを見つけられるようにしたいです。たとえば、ドロップダウンリスト(ビザ)からカードの種類を選択した場合、クレジットカード番号は4で始まる必要があります。それ以外の場合は、フォームを送信すると、何らかのメッセージが表示されます(カードが何であれ、カードを変更してください)。タイプ)。どんな助けでもいただければ幸いです。

カード番号テキストフィールドのIDはCardNumberです。他にどのような情報が必要かわかりません。フォームの残りの部分を検証するValidateという関数と、luhnチェックを行うCalculateという関数があります。

0 投票する
2 に答える
122 参照

php - 挿入が難しい

私はmysql/phpを使用しています。

私のテーブルは

コードが次の場合にバウチャーコードを生成しています:

  • 1つの乱数(例:64)
  • 1つの固定番号(例:352)
  • idフィールドの値(1,2,3,4,5 ...)
  • 1チェックディジット(luhnアルゴリズム)。

phpでこれを行う際の明らかな問題は、選択を実行し、次の自動インクリメント値を取得し、コードを計算し、挿入する必要があることです。その時点で、別の行が挿入されている可能性があります。

私がやりたいのは代わりに、

insert into vouchers (voucher) value('64352')て、それが私の残りの部分を生成するようにします。

これどうやってするの?機能/トリガー?

0 投票する
3 に答える
1891 参照

javascript - 奇数と偶数の位置ごとに文字列をチャンクする

私はjavascriptについて何も知りません。

文字列が「3005600008000」であると仮定すると、奇数の位置にあるすべての数字に 2 を掛け、偶数の位置にある数字に 1 を掛ける方法を見つける必要があります。

私が書いたこの疑似コードは、奇数(つまり「0」)に対してTRUEを出力します(私はそう思います)、

これが正しいかどうかはわかりません。文字列を奇数(および後で偶数)の位置でチャンク/分割しているとは思いません。

どうすればいいですか?ヒントを教えてください。

私の目標は、スマート カード ID 番号の検証ルーチンを Web ページに実装することです。

私が実装しようとしているロジックは次のとおりです。

・1)左から奇数桁全て2倍、偶数桁桁全て1倍する。

· 2) 1 桁を 2 で乗算した結果が 2 桁の数になる場合 (たとえば、「7 x 2 = 14」)、結果の桁を足し合わせて、新しい 1 桁の結果を生成します (" 1+4=5")。

· 3) 1 桁の結果をすべて加算します。

· 4) チェック ディジットは、次に高い 10 の倍数に到達するために、この結果に追加する必要がある量です。たとえば、ステップ 3 の合計が 22 の場合、次に大きい 10 の倍数 (30) に到達するには、22 に 8 を追加する必要があります。したがって、チェック ディジットは 8 です。

それが全体のアイデアです。スマートカード ID 検証に関する Google 検索では何も返されませんでした。Javascript でこれを行うのはやり過ぎだと思い始めています...

任意の入力を歓迎します。