Muitas vezes, a criptografia persistente é necessária para a criptografia secreta, e a criptografia nesse momento usa o MD5. Ao usar criptografia simétrica, o método DES é usado
Importar Java.io.ioxtion; Importar Sun.misc.basedecoder; "; private final Static String md =" md "; private final Static String key =" OPEDDSAEADDADBCABF "; / ** * algoritmo de criptografia md md mdencrypt (string data) @Param * @return * / public St ATIC String mdencrypt (string data) { String Resultados da String = NULL; Resultado; XFF) <X) {BF.Append ("T"); para o valor da chave * @param dados * @param chave de criptografia de chave de criptografia Array * @return * @throws Exceção */ public static string Desencrypt (dados da string, chave de string) lança exceção {if (key == null) {key = key; } byte [] bt = Encrypt (data.getbytes (), key.getbytes ()); Dados do param * @param key cription key byte Array * @return * @throws ioexception * @throws exceção */ public static string desdecrypt (dados da string, chave de string) lança o episódio ioexc, exceção {if (data == null) {return null ; ); ] d ata, byte [] key) lança exceção {// gera uma fonte de número aleatória confiável SecureRandom sr = new SecureRandom (); Crie uma fábrica -chave e use -a para converter o deskeyspec no objeto SecretKey SecretKey KeyFactory = SecretKeyFactory.GetInstance (DES); Cipher.getInstance (DES); Dados do param * @param chave de criptografia de chave Byte Array * @return * @throws exceção */ byte estático privado [] descriptografar (byte [] dados, byte [] key) lança exceção {// gerar uma fonte de número aleatória confiável SecureRandom sr = nova selerandom (); DES); );Abaixo, apresentarei um pedaço de código para implementar aulas de criptografia e descriptografia MD5 em Java
Java implementa as classes de criptografia e descriptografia do MD5, com aulas de teste, consulte o código para obter detalhes.
Classe de criptografia e descriptografia MD5 - MyMd5util, o código é o seguinte:
pacote com.zyg.security.md5; Final Static String hex_nums_str = "0123456789ABCDEF"; = (Hex.Length () / 2); POS = I * 2; Converta a matriz de bytes especificada em uma string hexadecimal * @param b * @return */ public static string bytetoHexString (byte [] b) {stringbuffer hexstring = new stringbuffer (); i ++) {String hex = Integer.tohexstring (b [i] e 0xff); : ::::::::::::::::::::::Here :::::::::::::::::::hee :::::::::::::::::heo the : ::::::::::::::::::::::Here :::::::::::::::::::hee :::::::::::::::::heo the :::::::::::::::::::::::::::)); * @param senhandB * @return * @throws nosuchalgorithMexception * @lança UnsupportEdEncodingException */public estático booleano vidalpassword (string senha, string senhandB) lança o noschalgorithMexception, não suportado a seguir, o dia // HexstringTobyte (senha indb); ); : ::::::::::::::::::::::Here :::::::::::::::::::hee :::::::::::::::::heo the : ::::::::::::::::::::::Here :::::::::::::::::::hee :::::::::::::::::heo the : Dados do sal é passado para o objeto Digest Md.Update (SALT); da senha de entrada byte [] Digest = md.digest (); Mensagem Digest da senha no banco de dados System.arraycopy (pwdindb, Salt_length, Digestindb, 0, Digestindb.length); Arrays.equals (Digest, Digestindb)) {// A senha retorna corretamente a mensagem de correspondência de senha retorna true; Senha hexadecimal * @Param Senha * @return * @THOUS Nosuchalgorithm Exceção * @THOWS UNSUPORTEDENCODENCODINGEXCECTIONS * /public static string getSryptedpwd (senha de string) lança o NosuchalgorithMexception, não suporta -se a senha do NosuchalGorithMexce. Gerador de números aleatórios SecureRandom Random = New SecureRandom (); Objeto MessAgedigest MD = NULL; objeto md.update (senha.getbytes ("utf-8")); Senha, adicione o comprimento do byte do sal PWD = novo byte [Digest.Length + Salt_Length]; , 0, PWD, 0, Salt_length); Password Encrypted Byte Array Formato para senha retornar bytetoHexString (PWD);Classe de teste - Cliente, o código é o seguinte:
pacote com.zyg.security.md5; PROBLEMA PRÓXIMO PRIMEIRO (] Nome de Userring = ZYG "; ); ou t. / TODO Gerado Bloco de Catch E.PrintStackTrace (); tente {criptografarpwd = mymd5util. / TODO Gerado Bloco de Catch E.PrintStackTrace (); Nome de usuário, senha da string) lança NosuchalgorithMexception, não suportadoEncodingException {String pwdindb = (string) users.get (nome de usuário); System.out.println ("Não existe esse usuário! ! ! "); retornar false;}}}