Leer en Español.
The idea of this repository, is to publish utilities (Java) that I have used in real projects, hopping will be "util" for you xD.
I will be updating this project from time to time.
- Date of Birth.
- Social Security Number.
- Encrypt Util.
- CURP Utils.
- Contact Utils. ** NEW **
Leer en Español.
-
Version 1.0
-
This is the first utility committed to the repository.
-
Its function is to extract "metadata" from the Date of Birth.
Example:
DateOfBirth dob = new DateOfBirth(1983, 12, 3);
System.out.println(dob.toString());
Result:
DateOfBirth{
dob=1983-12-03
age=36
day=3
month=12
year=1983
monthText=December
dayOfWeek=Saturday
isWeekend=true
isNewborn=false
isChild=false
isTeen=false
isAdult=true
isSenior=false
category=ADULT
ageRange=18+
date=Sat Dec 03 00:00:00 EST 1983
timestamp=1983-12-03 00:00:00.0
}
Leer en Español.
-
Version 1.0
-
The goal is to validate and format a US Social Security number (SSN).
-
The validate method is using the "Over-The-Top Validation" regular expression explained in the article "Validating Social Security Numbers through Regular Expressions" by Rion Williams.
Example:
SocialSecurityNumber ssn = new SocialSecurityNumber(52063811);
System.out.println(ssn.toString());
Result:
SocialSecurityNumber{
ssn=52063811
isValid=true
rawSSN=52063811
stringSSN=052063811
formattedSSN=052-06-3811
maskedSSN=XXX-XX-3811
}
Leer en Español.
-
Version 2.0 Updated as of 2021-05-05:
-
Class and implementation refactor to allow Text or Files encryption/decryption.
-
Now uses Advanced Encryption Standard using the Galois/Counter Mode and No Padding (AES/GCM/NoPadding) transformation.
Example 1: Encrypt/Decrypt Text
// Encrypt text "nacho" using key "secret".
String encrypted = new EncryptUtil("secret").encrypt("nacho").toString();
// Decrypt encrypted text using key "secret"
String decrypted = new EncryptUtil("secret").decrypt(encrypted).toString();
System.out.println("Encrypted Text: " + encrypted);
System.out.println("Decrypted Text: " + decrypted);
Example 1 - Result:
Note: The result may vary, as the method uses "salt" while performing the encryption.
Encrypted Text: GDa5uPI/Sx6cH52xciJzqRg2ubjyP0senB+dsXIic6k9HVHPipG7GhzyuSS2sF5v0XOnOqY=
Decrypted Text: nacho
Example 2: Encrypt/Decrypt Files
Note: You can pass the same file to cipher it, but this example is to show how a File is Encrypted and Decrypted by keeping the original file and by creating their corresponding encrypted and decrypted files.
// Keep original file
File file = new File ("files/chicken.pdf");
// Copy file to Encrypt, adding "_encrypted" to the file name.
File fileEncrypted = new File ("files/chicken_encrypted.pdf");
Files.copy(file.toPath(), fileEncrypted.toPath(), StandardCopyOption.REPLACE_EXISTING);
// Encrypt and Write File. This will create file "files/chicken_encrypted.pdf".
new EncryptUtil("secret").encrypt(fileEncrypted).writeFile();
// Copy File to Decrypt, adding "_decrypted" to the file name.
File fileDecrypted = new File ("files/chicken_decrypted.pdf");
Files.copy(fileEncrypted.toPath(), fileDecrypted.toPath(), StandardCopyOption.REPLACE_EXISTING);
// Decrypt File and Write File. This will create file "files/chicken_decrypted.pdf".
new EncryptUtil("secret").decrypt(fileDecrypted).writeFile();
Example 2 - Result:
- The code will generate 2 files,
chicken_encrypted.pdf
andchicken_decrypted.pdf
.
Example 3: Encrypt/Decrypt File to Base64
// Text file to encrypt
File file = new File ("files/file.txt");
// Encrypt file and return its Base64 representation
String encrypted = new EncryptUtil("secret").encrypt(file).toString();
// Decrypt Base64 File
String decrypted = new EncryptUtil("secret").decrypt(encrypted).toString();
System.out.println("Encrypted File: " + encrypted);
System.out.println("Decrypted File: " + decrypted);
Example 3 - Result:
Note: The result may vary, as the method uses "salt" while performing the encryption.
Encrypted File: rDRwr8JVSUd/j0KK08xHcqw0cK/CVUlHf49CitPMR3IMFCJ7iUMfGlz9NPoAzNZnmwFtK16sim8AqlaXMT2jHP
uunS8BVomNlRaGQP0c+D4PLAhfaDsHwdlbmjR9KoCIxND2kxCUySdoYx5+CnDDwactDvLU9RjVu9FLf/vdhBuM
L4kR5cAhp1xq9MG9HfCDIX9E0oxAM27MFrzUlokeztTSDZ21O5AOy9lhaz8yq0OWF/FQCNuQj49hdK2XuBpTrE
y07zKRgx+I83XuO2h53g==
Decrypted File: Pepe Pecas pica papas con un pico, con un pico pica papas Pepe Pecas.Si Pepe Pecas pica
papas con un pico, ¿dónde está el pico con que Pepe Pecas pica papas?
Example 4: Get data bytes
If you prefer, you can get the encrypted/decrypted data calling the method getBytes()
.
This is helpful, if the intention is to perform some custom treatment to the data.
// Encrypt text "nacho" using key "secret"
byte[] encrypted = new EncryptUtil("secret").encrypt("nacho").getBytes();
// Decrypt encrypted text using key "secret"
byte[] decrypted = new EncryptUtil("secret").decrypt(encrypted).getBytes();
System.out.println("Encrypted Data: " + encrypted);
System.out.println("Decrypted Data: " + decrypted);
Example 4 - Result:
Note: The result may vary, as this is printing the memory reference of the data.
Encrypted Data: [B@28ffffe0
Decrypted Data: [B@754b13a8
Sorry, not in English.
- RENAPO
- Wikipedia - Clave Única de Registro de Población
- INSTRUCTIVO Normativo para la asignación de la Clave Única de Registro de Población (DOF)
- INSTRUCTIVO Normativo para la asignación de la Clave Única de Registro de Población (PDF - Ver. 2006)
- ¿Tienes los datos de una Persona, pero no tienes la CURP? Puedes Generar la CURP a 16 dígitos.
- ¿Tienes los datos incompletos de una Persona, pero tienes una CURP válida? Puedes complementar los datos de una persona dada su CURP, extrayendo Fecha de Nacimiento, Sexo y Entidad Federativa de Nacimiento.
- ¿Los datos de la Persona no coinciden con la CURP? Puedes generar la CURP a 16 dígitos y compararlas para ver las diferencias.
- ¿Quieres realizar un proceso de limpieza y calidad de datos? Estas utilerías te pueden ayudar.
Nota: La Homoclave no es generada, esta es asignada por la Secretaría de Gobernación.
- Version 1.0
- Su función es la de Generar la Clave Única de Registro de Población (CURP), dado como parámetro los datos de una Persona.
- La CURP es generada utilizando el Instructivo Normativo proporcionado por la Secretaría de Gobernación 4.
- Ver código fuente.
- Ver javadoc.
Ejemplo 1: Generar el Objeto CURP con los datos de una Persona
Persona persona = new Persona();
persona.setPrimerApellido("ÑANDO");
persona.setSegundoApellido("DE LA O");
persona.setNombre("JOSE MARIA");
persona.setFechaDeNacimiento(1980, 12, 23);
persona.setSexo(Sexos.HOMBRE);
persona.setEstado(Estados.CDMX);
CURP curp = new CURPBuilder(persona).get();
System.out.println(curp);
Ejemplo 1 - Resultando en:
CURP: {
curp: "XAOM801223HDFNXR",
isValid: true,
size: 16,
iniciales: "XAOM",
fechaDeNacimiento: "801223",
sexo: "H",
entidadFederativa: "DF",
consonantes: "NXR",
homoclave: ""
}
Ejemplo 2: Generar el Objeto CURP con datos incompletos de una Persona
Nota: El Segundo Apellido es opcional, y se puede generar la CURP si es omitido.
Persona persona = new Persona();
persona.setPrimerApellido("DE LA PUERTA");
persona.setSegundoApellido("TORRES");
persona.setNombre("OFELIA");
persona.setFechaDeNacimiento(1990, 1, 5);
persona.setSexo(Sexos.MUJER);
// persona.setEstado(Estados.AGUASCALIENTES);
CURP curp = new CURPBuilder(persona).get();
Ejemplo 2 - Resultando en:
CURP: {
isValid: false
}
Ejemplo 3: Generar el Objeto CURP dada una cadena de texto válida (CURP Válida)
String curpString = "PXTO900105MASRRF01";
CURP curp = new CURPBuilder(curpString).get();
System.out.println(curp);
Ejemplo 3 - Resultando en:
CURP: {
curp: "PXTO900105MASRRF01",
isValid: true,
size: 18,
iniciales: "PXTO",
fechaDeNacimiento: "900105",
sexo: "M",
entidadFederativa: "AS",
consonantes: "RRF",
homoclave: "01"
}
Ejemplo 4: Generar el Objeto CURP dada una cadena de texto inválida (CURP inválida)
String curpString = "PEPE999999JSINAS1X";
CURP curp = new CURPBuilder(curpString).get();
System.out.println(curp);
Ejemplo 4 - Resultando en:
CURP: {
isValid: false
}
- Version 1.0
- Encuentra las diferencias entre la CURP de una persona y sus datos.
- Encuentra las diferencias entre dos CURP proporcionadas.
- Ver código fuente.
- Ver javadoc.
Ejemplo 1: Genera la CURP basada en los datos de la Persona, y lo compara con su CURP
Persona persona = new Persona();
persona.setPrimerApellido("ÑANDO");
persona.setSegundoApellido("DE LA O");
persona.setNombre("JOSE MARIA");
persona.setFechaDeNacimiento(1980, 12, 23);
persona.setSexo(Sexos.HOMBRE);
persona.setEstado(Estados.CDMX);
persona.setCurp("XAOM801223HDFNXR01");
CURPDiferencias curpDiferencias = new CURPValidador(persona).validate();
System.out.println(curpDiferencias);
Ejemplo 1 - Resultando en:
CURPDiferencias: {
curpEsperado: "XAOM801223HDFNXR01",
curpGenerado: "XAOM801223HDFNXR",
diferencias: ["HOMOCLAVE", "CURP VALIDO"]
}
Ejemplo 2: Encuentra las diferencias entre 2 CURP
CURPDiferencias curpDiferencias = new CURPValidador("XAOA801223HDFNXL00", "XAOA801223MDFNXL").validate();
System.out.println(curpDiferencias);
Ejemplo 2 - Resultando en:
CURPDiferencias: {
curpEsperado: "XAOA801223HDFNXL00",
curpGenerado: "XAOA801223MDFNXL",
diferencias: ["SEXO", "HOMOCLAVE"]
}
Leer en Español.
- Version 1.0
- Utility class to Validate, Format, Mask, Verify and extract metadata from an Email Address.
- See Source Code.
- See javadoc.
Example
ContactMethod email = new EmailAddress("[email protected]");
System.out.println(email);
Result:
EmailAddress: {
value: "[email protected]",
formatted: "[email protected]",
userName: "nacho",
domain: "nacho.com",
masked: "na***@nacho.com",
verified: false,
isEmpty: false,
isValid: true,
type: "EmailAddress"
}
- Version 1.0
- Utility class to Validate, Format, Mask, Verify and extract metadata from a Phone Number.
- See Source Code.
- See javadoc.
Example
ContactMethod phone = new PhoneNumber("AX(123) 456 78-90 ALKSDJ");
System.out.println(phone);
Result:
PhoneNumber: {
value: "1234567890",
formatted: "(123) 456-7890",
areaCode: "123",
masked: "(***) ***-7890",
verified: false,
isEmpty: false,
isValid: true,
type: "PhoneNumber"
}