CpfCnpjUtil.java
3.91 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
package br.gov.mc.cadsei.util;
import br.gov.arquitetura.util.StringUtil;
/**
* Valida CNPJ sem mascara
*
* @author Igor Galv�o
*
*/
public class CpfCnpjUtil {
static public boolean validarCNPJ(String cnpj) {
int soma = 0, dig;
String cnpj_calc = cnpj.substring(0, 12);
if (cnpj.length() != 14)
return false;
char[] chr_cnpj = cnpj.toCharArray();
/* Primeira parte */
for (int i = 0; i < 4; i++)
if (chr_cnpj[i] - 48 >= 0 && chr_cnpj[i] - 48 <= 9)
soma += (chr_cnpj[i] - 48) * (6 - (i + 1));
for (int i = 0; i < 8; i++)
if (chr_cnpj[i + 4] - 48 >= 0 && chr_cnpj[i + 4] - 48 <= 9)
soma += (chr_cnpj[i + 4] - 48) * (10 - (i + 1));
dig = 11 - (soma % 11);
cnpj_calc += (dig == 10 || dig == 11) ? "0" : Integer.toString(dig);
/* Segunda parte */
soma = 0;
for (int i = 0; i < 5; i++)
if (chr_cnpj[i] - 48 >= 0 && chr_cnpj[i] - 48 <= 9)
soma += (chr_cnpj[i] - 48) * (7 - (i + 1));
for (int i = 0; i < 8; i++)
if (chr_cnpj[i + 5] - 48 >= 0 && chr_cnpj[i + 5] - 48 <= 9)
soma += (chr_cnpj[i + 5] - 48) * (10 - (i + 1));
dig = 11 - (soma % 11);
cnpj_calc += (dig == 10 || dig == 11) ? "0" : Integer.toString(dig);
return cnpj.equals(cnpj_calc);
}
static public String FormatCPF(String cpf){
String sCpf = String.valueOf(cpf);
while(sCpf.length() < 11){
sCpf = "0" + sCpf;
}
return StringUtil.format("###.###.###-##", sCpf);
}
static public String FormatCPF(Long cpf){
String sCpf = String.valueOf(cpf);
while(sCpf.length() < 11){
sCpf = "0" + sCpf;
}
return StringUtil.format("###.###.###-##", sCpf);
}
static public String FormatCNPJ(Long cnpj){
String sCnpj = String.valueOf(cnpj);
while(sCnpj.length() < 14){
sCnpj = "0" + sCnpj;
}
return StringUtil.format("##.###.###/####-##", sCnpj);
}
static public String FormatCNPJ(String cnpj){
String sCnpj = String.valueOf(cnpj);
while(sCnpj.length() < 14){
sCnpj = "0" + sCnpj;
}
return StringUtil.format("##.###.###/####-##", sCnpj);
}
public static boolean ValidateCPF(String cpf) {
int priVer;
int segVer;
String cpfVerificar = null;
String digito = null;
// CPF inválido
if (cpf.length() < 11) {
return false;
// CPF formatado
} else if (cpf.length() > 11) {
cpfVerificar = cpf.substring(0, 11);
digito = cpf.substring(12, cpf.length());
cpfVerificar = cpfVerificar.replaceAll("[^0-9]", "");
// CPF não formatado
} else {
cpfVerificar = cpf.substring(0, 9);
digito = cpf.substring(9, 11);
}
if (cpf.equals("111.111.111-11") || cpf.equals("222.222.222-22")
|| cpf.equals("333.333.333-33") || cpf.equals("444.444.444-44")
|| cpf.equals("555.555.555-55") || cpf.equals("666.666.666-66")
|| cpf.equals("777.777.777-77") || cpf.equals("888.888.888-88")
|| cpf.equals("999.999.999-99")) {
return false;
}else{
char[] auxCpf = cpfVerificar.toCharArray();
int[] valPri = { 10, 9, 8, 7, 6, 5, 4, 3, 2 };
int[] valSeg = { 11, 10, 9, 8, 7, 6, 5, 4, 3, 2 };
int i = 0;
Double sum = 0d;
for (char c : auxCpf) {
sum += (double) (valPri[i] * Character.getNumericValue(c));
i++;
}
if ((sum % 11) < 2) {
priVer = 0;
} else {
priVer = (int) (11 - (sum % 11));
}
// Adiciona o digito verificador para calculo do segundo digito
cpfVerificar = cpfVerificar + priVer;
auxCpf = cpfVerificar.toCharArray();
// Reseta a somatória e calcula o segundo digito.
sum = 0d;
i = 0;
for (char c : auxCpf) {
sum += (double) (valSeg[i] * Character.getNumericValue(c));
i++;
}
if ((sum % 11) < 2) {
segVer = 0;
} else {
segVer = (int) (11 - (sum % 11));
}
return digito.equals(String.valueOf(priVer)
+ String.valueOf(segVer));
}
}
public static void main(String[] args) {
//if(CpfCnpjUtil.ValidateCPF("04301361960"))
if(CpfCnpjUtil.ValidateCPF("012.443.606.43"))
System.out.println("OK");
else
System.out.println("CPF Inválido");
}
}