[ Content | Sidebar ]

Something about this interesting class: the ThreadPoolExecutor (of course this is Java)

August 30th, 2010

Since I found very little books covering this Java marvel, I decided to write myself something about it. Something about this interesting class: the ThreadPoolExecutor (of course this is Java) continued »

Validação de Número de Documento do Cartão de Cidadão (Versão 1.0 – Jan. 2010) em Java SE [PT]

August 13th, 2010

O código de autenticação de numero de documento do cartão de cidadão em Java. Já existia o mesmo em C# .Net, achei pertinente criar uma versão em Java SE. Espero que seja útil para alguém.

public class CCValidator
{
     public static boolean ValidateNumeroDocumentoCC(String numeroDocumento) throws Exception
     {
          int sum = 0;
          boolean secondDigit = false;

          if (numeroDocumento.length() != 12) {
               throw new Exception("Tamanho inválido para número de documento.");
          }

          for (int i = numeroDocumento.length() - 1; i >= 0; --i)
          {
               int valor = getNumberFromChar(numeroDocumento.charAt(i));

               if (secondDigit)
               {
                    valor *= 2;
                    if (valor > 9)
                    {
                         valor -= 9;
                    }
               }

          sum += valor;
          secondDigit = !secondDigit;
     }

return (sum % 10) == 0;
}

public static int getNumberFromChar(char letter) throws Exception
{
     switch (letter)
     {
          case '0':
               return 0;
          case '1':
               return 1;
          case '2':
               return 2;
          case '3':
               return 3;
          case '4':
               return 4;
          case '5':
               return 5;
          case '6':
               return 6;
          case '7':
               return 7;
          case '8':
               return 8;
          case '9':
               return 9;
          case 'A':
               return 10;
          case 'B':
               return 11;
          case 'C':
               return 12;
          case 'D':
               return 13;
          case 'E':
               return 14;
          case 'F':
               return 15;
          case 'G':
               return 16;
          case 'H':
               return 17;
          case 'I':
               return 18;
          case 'J':
               return 19;
          case 'K':
               return 20;
          case 'L':
               return 21;
          case 'M':
               return 22;
          case 'N':
               return 23;
          case 'O':
               return 24;
          case 'P':
               return 25;
          case 'Q':
               return 26;
          case 'R':
               return 27;
          case 'S':
               return 28;
          case 'T':
               return 29;
          case 'U':
               return 30;
          case 'V':
               return 31;
          case 'W':
               return 32;
          case 'X':
               return 33;
          case 'Y':
               return 34;
          case 'Z':
               return 35;
          }

          throw new Exception("Valor inválido no número de documento.");
     }
}

Caso tenham alguma necessidade especifica sobre o cartão de cidadão aproveitem e comentem!
O meu comentário sobre o cartão do cidadão é que, embora seja um cartão que contem um micro-controlador que corre uma Java Virtual Machine, ou seja, é um Smart Card bastante avançado e robusto, os comandos para invocar as funções internas, para obter os dados públicos por ex., ainda é um mistério, ou seja, embora seja um produto para uso publico, onde está a informação para comunicar a baixo nível com o próprio cartão?

Para um cartão extremamente seguro não compreendo o porquê de tanto secretismo. O cartão nem permite a escrita por entidades não autorizadas.

Uma visita ao Professor Doutor André Zúquete! [PT]

June 28th, 2010

Depois de uma interessante palestra dedicada à criptografia, em especial à importância dos vectores de inicialização nas cifras síncronas, no modo CBC (encadeamento do bloco da cifra) e como os dados de dos vectores de inicialização devem ser geridos, muito por necessidade da criação do formato (ou estrutura) dos ficheiros encriptados pelo meu programa de criptografia baseado no algoritmo Rijndael e que segue o standard AES (por defeito com chaves de 256 bits ou 32 octetos) o Professor Doutor André Zúquete e eu acabamos por terminar a nossa conversa com o autógrafo de um exemplar do seu livro intitulado “Segurança em Redes Informáticas – 2ª Edição Aumentada”. Aproveito para informar que já saiu a 3ª edição do mesmo, a editora é a FCA.


Aproveito para dar os parabéns pela 3ª edição, agora de 2010, que prova que realmente temos excelentes peritos em segurança de redes informáticas em Portugal e também os meus sinceros agradecimentos pessoais pela atenção oferecida.

The search for the best tea!

April 15th, 2010

Dear readers,

I’m posting this article to gather your personal opinions, for you to share your favourite tea blendings and brands. For an answer I just need, at least, the brand and blending names plus flavour and fragrance descriptions! Please remember that this article is about tea and not herbal infusions, the plant in question is Camellia Sinensis.

Instead of telling the brand and blending names, if the described blending is your own, please share the recipe too!

I look forward to see your feedback!

Joomla! vs WordPress

March 16th, 2010

After learning a little about the Joomla! framework, of how components, modules, plug-ins, templates and language packs work, I decided to learn something new, what should it be?

Joomla! vs WordPress continued »