t-nissieの日記: 【電脳】クレジットマスター 4
日記 by
t-nissie
カード番号と有効期限だけで買い物ができる通販サイトが
あるらしい。チェックディジットを合わせることなら簡単
だが、有効期限はどうやって推測しているのだろうか。
Perlモジュールは CreditCard.pm(左上のSourceをクリック)。
Rubyは昔、ruby-talkでいかに短く書けるかが競われてい
たような気がする。
Perl版からチェックディジットを計算するところだけをRuby
に書き換えてみた。自分の2つのカードでは確かめたけど…
番号が16桁でないカードなんてホントにあるのかしら。
#!/usr/bin/env ruby
# CreditCard.rb Credit Card Check Digit Checker by t-nissie
##
while line = ARGF.gets
number = line.delete(" \t\r\n\f\v")
sum = 0
(0..number.length-2).each do |i|
#p i
#p number[-(i+2),1].to_i
weight = number[-(i+2),1].to_i * (2 - i.modulo(2))
sum += ((weight < 10) ? weight : (weight - 9))
end
print number, " ", (10 - sum % 10) % 10, "\n"
end
実行方法:
$ echo '4321 0987 6543 2107' | ./CreditCard.rb
4321098765432107 7
有効期限 (スコア:1)
各所の記事には、カードの有効期限は、元になったカードと大抵同じだからと書いてあったですよ
実際、二年程度で新しいのが送られてくるでありますし、1月が設定されていることが多いような
Re:有効期限 (スコア:1)
もしかしたら信用度の同じような人をまとめているのかもしれませんが。
love && peace && free_software
t-nissie
余計なお世話かもしれませんが、 (スコア:1)
ここ [benrista.com]、参考になると思います。
Re:余計なお世話かもしれませんが、 (スコア:1)
で、16桁以外のカードは見たことがないなぁ、と思いました。
(アメックスみたいな高級なカードを持ったことがないせいかもしれませんが。)
わかりにくくてごめんなさい。
love && peace && free_software
t-nissie