这段PHP代码根据信用卡卡号产生规则随机生成信用卡卡号,是可以通过验证的,仅供学习参考,请不要用于非法用途,否则后果自负。
<?php
/*
PHPcreditcardnumbergenerator
Copyright(C)[email protected]
Thisprogramisfreesoftware;youcanredistributeitand/or
modifyitunderthetermsoftheGNUGeneralPublicLicense
aspublishedbytheFreeSoftwareFoundation;eitherversion2
oftheLicense,or(atyouroption)anylaterversion.
Thisprogramisdistributedinthehopethatitwillbeuseful,
butWITHOUTANYWARRANTY;withouteventheimpliedwarrantyof
MERCHANTABILITYorFITNESSFORAPARTICULARPURPOSE.Seethe
GNUGeneralPublicLicenseformoredetails.
YoushouldhavereceivedacopyoftheGNUGeneralPublicLicense
alongwiththisprogram;ifnot,writetotheFreeSoftware
Foundation,Inc.,51FranklinStreet,FifthFloor,Boston,MA02110-1301,USA.
*/
$visaPrefixList[]="4539";
$visaPrefixList[]="4556";
$visaPrefixList[]="4916";
$visaPrefixList[]="4532";
$visaPrefixList[]="4929";
$visaPrefixList[]="40240071";
$visaPrefixList[]="4485";
$visaPrefixList[]="4716";
$visaPrefixList[]="4";
$mastercardPrefixList[]="51";
$mastercardPrefixList[]="52";
$mastercardPrefixList[]="53";
$mastercardPrefixList[]="54";
$mastercardPrefixList[]="55";
$amexPrefixList[]="34";
$amexPrefixList[]="37";
$discoverPrefixList[]="6011";
$dinersPrefixList[]="300";
$dinersPrefixList[]="301";
$dinersPrefixList[]="302";
$dinersPrefixList[]="303";
$dinersPrefixList[]="36";
$dinersPrefixList[]="38";
$enRoutePrefixList[]="2014";
$enRoutePrefixList[]="2149";
$jcbPrefixList[]="35";
$voyagerPrefixList[]="8699";
/*
'prefix'isthestartoftheCCnumberasastring,anynumberofdigits.
'length'isthelengthoftheCCnumbertogenerate.Typically13or16
*/
functioncompleted_number($prefix,$length){
$ccnumber=$prefix;
#generatedigits
while(strlen($ccnumber)<($length-1)){
$ccnumber.=rand(0,9);
}
#Calculatesum
$sum=0;
$pos=0;
$reversedCCnumber=strrev($ccnumber);
while($pos<$length-1){
$odd=$reversedCCnumber[$pos]*2;
if($odd>9){
$odd-=9;
}
$sum+=$odd;
if($pos!=($length-2)){
$sum+=$reversedCCnumber[$pos+1];
}
$pos+=2;
}
#Calculatecheckdigit
$checkdigit=((floor($sum/10)+1)*10-$sum)%10;
$ccnumber.=$checkdigit;
return$ccnumber;
}
functioncredit_card_number($prefixList,$length,$howMany){
for($i=0;$i<$howMany;$i++){
$ccnumber=$prefixList[array_rand($prefixList)];
$result[]=completed_number($ccnumber,$length);
}
return$result;
}
functionoutput($title,$numbers){
$result[]="<divclass='creditCardNumbers'>";
$result[]="<h3>$title</h3>";
$result[]=implode('<br/>',$numbers);
$result[]='</div>';
returnimplode('<br/>',$result);
}
#
#Main
#
echo"<divclass='creditCardSet'>";
$mastercard=credit_card_number($mastercardPrefixList,16,10);
echooutput("Mastercard",$mastercard);
$visa16=credit_card_number($visaPrefixList,16,10);
echooutput("VISA16digit",$visa16);
echo"</div>";
echo"<divclass='creditCardSet'>";
$visa13=credit_card_number($visaPrefixList,13,5);
echooutput("VISA13digit",$visa13);
$amex=credit_card_number($amexPrefixList,15,5);
echooutput("AmericanExpress",$amex);
echo"</div>";
#Minorcards
echo"<divclass='creditCardSet'>";
$discover=credit_card_number($discoverPrefixList,16,3);
echooutput("Discover",$discover);
$diners=credit_card_number($dinersPrefixList,14,3);
echooutput("DinersClub",$diners);
echo"</div>";
echo"<divclass='creditCardSet'>";
$enRoute=credit_card_number($enRoutePrefixList,15,3);
echooutput("enRoute",$enRoute);
$jcb=credit_card_number($jcbPrefixList,16,3);
echooutput("JCB",$jcb);
echo"</div>";
echo"<divclass='creditCardSet'>";
$voyager=credit_card_number($voyagerPrefixList,15,3);
echooutput("Voyager",$voyager);
echo"</div>";
?>
|