Os mais comuns incluem: senha de usuário do banco de dados, senha de usuário da plataforma SMS, senha fixa para verificação entre sistemas, etc.
Esta classe de ferramenta refere-se à implementação da Seção 5.3 do livro "Spring.3.x Enterprise Application Development Practice".
O código completo e as informações de anotação são os seguintes:
Copie o código do código da seguinte forma:
pacote com.cncounter.util.comm;
importar java.security.Key;
importar java.security.SecureRandom;
importar javax.crypto.Cipher;
importar javax.crypto.KeyGenerator;
importar sun.misc.BASE64Decoder;
importar sun.misc.BASE64Encoder;
classe pública DESUtils {
// chave
chave chave estática privada;
// semente CHAVE
String estática privada KEY_STR = "[email protected]";
//constante
string final estática pública UTF_8 = "UTF-8";
public static final String DES = "DES";
// inicialização estática
estático{
tentar {
//gerador de CHAVE
Gerador KeyGenerator = KeyGenerator.getInstance(DES);
//Inicialização, operador aleatório seguro
gerador.init(new SecureRandom( KEY_STR.getBytes(UTF_8) ));
//Gera chave
chave = gerador.generateKey();
gerador = nulo;
} catch (Exceção e) {
lançar nova RuntimeException(e);
}
}
/**
* Criptografe a string de origem e retorne a string criptografada codificada em BASE64.
* @param source string de origem, texto simples
* @return string de texto cifrado
*/
codificação de string estática pública (fonte de string){
tentar {
// Obtém o array de bytes de acordo com o formato de codificação
byte[] sourceBytes = source.getBytes(UTF_8);
//modo de criptografia DES
Cifra cifra = Cipher.getInstance(DES);
cipher.init(Cipher.ENCRYPT_MODE, chave);
//Array de bytes criptografados
byte[] encryptSourceBytes = cipher.doFinal(sourceBytes);
// Codificador Base64
BASE64Encoder base64Encoder = novo BASE64Encoder();
retornar base64Encoder.encode(encryptSourceBytes);
} catch (Exceção e) {
// throw também pode ser considerado como um caminho de retorno
lançar nova RuntimeException(e);
}
}
/**
* Decodifique/descriptografe a string criptografada pelo método encode() desta classe de ferramenta
* @param criptografado A string criptografada, ou seja, o texto cifrado
* @return string de texto simples
*/
decodificação de string estática pública (string criptografada){
//Decodificador Base64
BASE64Decoder base64Decoder = new BASE64Decoder();
tentar {
//Decodifica base64 primeiro
byte[] cryptedBytes = base64Decoder.decodeBuffer(criptografado);
// modo de descriptografia DES
Cifra cifra = Cipher.getInstance(DES);
cipher.init(Cipher.DECRYPT_MODE, chave);
//Matriz de bytes decodificada
byte[] decryptStrBytes = cipher.doFinal(cryptedBytes);
// Converte a matriz de bytes em uma string usando o formato de codificação fornecido
retornar nova String(decryptStrBytes, UTF_8);
} catch (Exceção e) {
// Este formulário é realmente adequado para classes de ferramentas de processamento
lançar nova RuntimeException(e);
}
}
//teste unitário
public static void main(String[] args) {
//String que precisa ser criptografada
String email = "[email protected]";
//criptografar
String criptografada = DESUtils.encode(email);
//Descriptografar
String descriptografada = DESUtils.decode(criptografada);
//resultado de saída;
System.out.println("e-mail: " + e-mail);
System.out.println("criptografado: " + criptografado);
System.out.println("descriptografado: " + descriptografado);
System.out.println("email.equals(descriptografado): " + email.equals(descriptografado));
}
}