Amigo em tenho em delphi, e deve servir como base para voce 
Segue ai:
Código:
function TFormCadastroPessoa.ValidarCPF(CPF : String) : Boolean;
var
n1, n2, n3, n4, n5, n6, n7, n8, n9 : Integer;
d1, d2 : Integer;
Digitado, Calculado : String;
begin
if
(
(CPF = '000.000.000-00') OR
(CPF = '111.111.111-11') OR
(CPF = '222.222.222-22') OR
(CPF = '333.333.333-33') OR
(CPF = '444.444.444-44') OR
(CPF = '555.555.555-55') OR
(CPF = '666.666.666-66') OR
(CPF = '777.777.777-77') OR
(CPF = '888.888.888-88') OR
(CPF = '999.999.999-99')
) then
begin
Result := False;
end else
begin
n1 := StrToIntDef(CPF[1],0);
n2 := StrToIntDef(CPF[2],0);
n3 := StrToIntDef(CPF[3],0);
n4 := StrToIntDef(CPF[5],0);
n5 := StrToIntDef(CPF[6],0);
n6 := StrToIntDef(CPF[7],0);
n7 := StrToIntDef(CPF[9],0);
n8 := StrToIntDef(CPF[10],0);
n9 := StrToIntDef(CPF[11],0);
d1 := n9 * 2 + n8 * 3 + n7 * 4 + n6 * 5 + n5 * 6 + n4 * 7 + n3 * 8 + n2 * 9 + n1 * 10;
d1 := (11-(d1 mod 11));
if(d1 >= 10) then
d1 := 0;
d2 := d1 * 2 + n9 * 3 + n8 * 4 + n7 * 5 + n6 * 6 + n5 * 7 + n4 * 8 + n3 * 9 + n2 * 10 + n1 * 11;
d2 := (11 - (d2 MOD 11));
if(d2 >= 10) then
d2 := 0;
Calculado := (IntToStr(d1) + IntToStr(d2));
Digitado := (CPF[13] + CPF[14]);
if(Calculado = Digitado) then
Result := True
else
Result := False;
end;
end;