Added Fake CreditCard generator
This commit is contained in:
@@ -0,0 +1,34 @@
|
||||
/*
|
||||
* Copyright (C) 2025 UnlegitDqrk - All Rights Reserved
|
||||
*
|
||||
* You are unauthorized to remove this copyright.
|
||||
* You have to give Credits to the Author in your project and link this GitHub site: https://github.com/UnlegitDqrk
|
||||
* See LICENSE-File if exists
|
||||
*/
|
||||
|
||||
package dev.unlegitdqrk.unlegitlibrary.bank;
|
||||
|
||||
public class CardBrand {
|
||||
public static final CardBrand VISA = new CardBrand(16, new String[]{"4"});
|
||||
public static final CardBrand AMERICANEXPRESS = new CardBrand(15, new String[]{"34","37"});
|
||||
public static final CardBrand MASTERCARD = new CardBrand(16, new String[] {
|
||||
"51","52","53","54","55",
|
||||
"2221","2222","2223","2720"
|
||||
});
|
||||
|
||||
private final int length;
|
||||
private final String[] prefixes;
|
||||
|
||||
public CardBrand(int length, String[] prefixes) {
|
||||
this.length = length;
|
||||
this.prefixes = prefixes;
|
||||
}
|
||||
|
||||
public int getLength() {
|
||||
return length;
|
||||
}
|
||||
|
||||
public String[] getPrefixes() {
|
||||
return prefixes;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,91 @@
|
||||
/*
|
||||
* Copyright (C) 2025 UnlegitDqrk - All Rights Reserved
|
||||
*
|
||||
* You are unauthorized to remove this copyright.
|
||||
* You have to give Credits to the Author in your project and link this GitHub site: https://github.com/UnlegitDqrk
|
||||
* See LICENSE-File if exists
|
||||
*/
|
||||
|
||||
package dev.unlegitdqrk.unlegitlibrary.bank;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Random;
|
||||
|
||||
public class CreditCard {
|
||||
|
||||
private final String cardNumber;
|
||||
private final CardBrand cardBrand;
|
||||
private final Random random;
|
||||
|
||||
public CardBrand getCardBrand() {
|
||||
return cardBrand;
|
||||
}
|
||||
|
||||
public Random getRandom() {
|
||||
return random;
|
||||
}
|
||||
|
||||
public String getCardNumber() {
|
||||
return cardNumber;
|
||||
}
|
||||
|
||||
public CreditCard(CardBrand cardBrand) {
|
||||
this.cardBrand = cardBrand;
|
||||
this.random = new Random();
|
||||
this.cardNumber = generateCardNumber();
|
||||
}
|
||||
|
||||
public CreditCard(CardBrand cardBrand, int seed) {
|
||||
this.cardBrand = cardBrand;
|
||||
this.random = new Random(seed);
|
||||
this.cardNumber = generateCardNumber();
|
||||
}
|
||||
|
||||
private String generateCardNumber() {
|
||||
int totalLength = cardBrand.getLength();
|
||||
|
||||
List<Integer> digits = new ArrayList<>(totalLength);
|
||||
|
||||
String chosenPrefix = null;
|
||||
if (cardBrand.getPrefixes() != null && cardBrand.getPrefixes().length > 0) {
|
||||
String[] prefixes = cardBrand.getPrefixes();
|
||||
chosenPrefix = prefixes[random.nextInt(prefixes.length)];
|
||||
for (char c : chosenPrefix.toCharArray()) {
|
||||
digits.add(c - '0');
|
||||
}
|
||||
} else digits.add(1 + random.nextInt(9));
|
||||
|
||||
while (digits.size() < totalLength - 1) digits.add(random.nextInt(10));
|
||||
|
||||
int checkDigit = computeLuhnCheckDigit(digits, totalLength);
|
||||
digits.add(checkDigit);
|
||||
|
||||
StringBuilder sb = new StringBuilder();
|
||||
for (int i = 0; i < digits.size(); i++) {
|
||||
sb.append(digits.get(i));
|
||||
if ((i + 1) % 4 == 0 && i != digits.size() - 1) sb.append(' ');
|
||||
}
|
||||
|
||||
return sb.toString();
|
||||
}
|
||||
|
||||
private int computeLuhnCheckDigit(List<Integer> digitsWithoutCheck, int totalLength) {
|
||||
int sum = 0;
|
||||
int n = digitsWithoutCheck.size() + 1;
|
||||
|
||||
for (int i = 0; i < digitsWithoutCheck.size(); i++) {
|
||||
int digit = digitsWithoutCheck.get(i);
|
||||
int posFromRight = n - i;
|
||||
boolean shouldDouble = (posFromRight % 2 == 0);
|
||||
if (shouldDouble) {
|
||||
int d = digit * 2;
|
||||
if (d > 9) d -= 9;
|
||||
sum += d;
|
||||
} else sum += digit;
|
||||
}
|
||||
|
||||
int mod = sum % 10;
|
||||
return (10 - mod) % 10;
|
||||
}
|
||||
}
|
||||
@@ -1,17 +0,0 @@
|
||||
/*
|
||||
* Copyright (C) 2025 UnlegitDqrk - All Rights Reserved
|
||||
*
|
||||
* You are unauthorized to remove this copyright.
|
||||
* You have to give Credits to the Author in your project and link this GitHub site: https://github.com/UnlegitDqrk
|
||||
* See LICENSE-File if exists
|
||||
*/
|
||||
|
||||
package dev.unlegitdqrk.unlegitlibrary.window;
|
||||
|
||||
public class Window {
|
||||
WinUser.WNDCLASSEX wndClass = new WinUser.WNDCLASSEX();
|
||||
|
||||
public Window(String tile, int x, int y, int width, int height) {
|
||||
WinUs
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user