SHA1
pacote com.stone.security; importar java.io.byteArrayInputStream; importar java.io.file; importar java.io.fileInputStream; importar java.io.fileOutputStream; importar java.security.digestinputStream; importar java.security.digestOutputStream; importar java.Security.Messagedigest; importar java.util.arrays; importar javax.crypto.mac; importar javax.crypto.secretkey; importar javax.crypto.secretKeyFactory; importar javax.crypto.spec.pbekeyspec; classe pública sha {public static void main (string [] args) lança exceção {codeByMac ("China op ... &*() ... & 802134 ..."); Encodybysha ("China op ... &*() ... & 802134 ..."); shafile (); } / ** * Resumo da mensagem usando o algoritmo MAC * @param dados * @throws Exception * / public static void codeByMac (dados da string) lança exceção {// keyGenerator keygen = keyGenerator.getInstance ("hmacsha1"); // SecretKey key = keygen.geRekeKey (); // Esta chave gerada cada vez é diferente, pbekeyspec Keyspec = new PBeKeyspec ("Randomey^(^&*^%$". Código de autenticação "(MAC) Algoritmo. * Mac fornece uma maneira de verificar a integridade das informações transmitidas ou armazenadas em mídia não confiável com base em chaves secretas. função (como md5 ou sha-1) */ mac = mac.getInstance ("hmacsha1"); Mac.init (chave); byte [] dest = mac.dofinal (data.getBytes ()); System.out.println (dest.Length); System.out.println ("Resumo do MAC:" + Arrays.toString (dest)); } / *** A criptografia SHA1 usa a mensagem Digest Messagedigest para lidar com* @Throws Exception* / public static string codebybysha (string str) lança a exceção {Messagedigest sha1; sha1 = Messagedigest.getInstance ("sha1"); // Os três a seguir não estão disponíveis // sha1 = Messagedigest.getInstance ("sha256"); // SHA1 = Messagedigest.getInstance ("SHA384"); // sha1 = Messagedigest.getInstance ("sha512"); sha1.Update (str.getBytes ()); // Atualize o resumo primeiro byte [] DIGEST = SHA1.DIGEST (); // O cálculo de hash é concluído executando operações finais, como preenchimento. Depois que esse método é chamado, o resumo é redefinido. / * * Use a matriz de bytes especificada para fazer a atualização final do resumo e concluir o cálculo resumido. * Ou seja, esse método chama primeiro a atualização (entrada), * passa a matriz de entrada para o método de atualização e depois chama Digest (). */ // byte [] Digest = sha1.digest (str.getBytes ()); String hex = tohex (diger); System.out.println ("SHA1 Resumo:" + Hex); retornar hexadecimal; } / *** Resumo dos dados do arquivo* @THOWSOWS Exceção* / public static void shafile () lança Exceção {Messagedigest MessAgedigest = Messagedigest.getInstance ("sha1"); DigestOutputStream DOS = new DigestOutputStream (new FileOutputStream (new File ("abc.txt")), Messagedigest); Dos.Write ("Povo chinês ... & ()) f*(214) admin*". getBytes ()); dos.close (); byte [] Digest = Messagedigest.Digest (); System.out.println ("Escreva um arquivo usando o fluxo, o resumo do arquivo é:" + tohex (diger)); DigestInputStream dis = new DigestInputStream (new FileInputStream (novo arquivo ("abc.txt")), Messagedigest); byte [] buf = novo byte [100]; int len; while ((len = Dis.Read (BUF))! = -1) {System.out.println ("Os dados são:" + new String (BUF, 0, Len)); } dis.close (); byte [] Digest2 = Messagedigest.Digest (); // Quando o fluxo é lido, o arquivo é concluído e o resumo é o mesmo que quando está escrito System.out.println ("Use Stream para ler o arquivo, o resumo do arquivo é:" + tohex (Digest2)); } / ** * sha1 Digest é para hexadecimal * @param digery * @return * / string estática privada tohex (byte [] diger) {stringbuilder sb = new stringbuilder (); int len = diger.length; String out = null; for (int i = 0; i <len; i ++) {// out = Integer.toHexString (0xff & digers [i]+0xabcdef); // adicione qualquer sal out = integer.tohexString (0xff & digery [i]); // método original if (out.length () == 1) {sb.append ("0"); // se você adicionar 0 na frente de 1 bit} sb.append (out); } return sb.toString (); }}
MD5
MD5 (Algoritmo de Digest Message 5), a quinta edição do algoritmo Digest Message. A Mensagem Digest é um algoritmo: não importa quanto tempo tenha os dados originais, o resultado do resumo da mensagem é de um comprimento fixo; É um algoritmo irreversível. Alterações em qualquer bit dos dados originais causarão grandes diferenças nos resultados do resumo da mensagem e a probabilidade de calcular os dados originais com base nos resultados é extremamente baixa.
O resumo da mensagem pode ser considerado como a impressão digital dos dados originais. Impressões digitais diferentes tornarão os dados originais diferentes.
pacote com.stone.security; importar java.io.byteArrayInputStream; importar java.io.file; importar java.io.fileInputStream; importar java.io.fileOutputStream; importar java.security.digestinputStream; importar java.security.digestOutputStream; importar java.Security.Messagedigest; importar java.util.arrays; importar javax.crypto.mac; importar javax.crypto.secretkey; importar javax.crypto.secretKeyFactory; importar javax.crypto.spec.pbekeyspec; classe pública md5 {public static void main (string [] args) lança exceção {codeByMac ("China op ... &*() ... & 802134 ..."); codeByMD5 ("China op ... &*() ... & 802134 ..."); md5file (); } / ** * Resumo da mensagem usando o algoritmo Mac * @param dados * @throws Exception * / public static void codeByMac (dados da string) lança Exceção {// keyGenerator keygen = keyGenerator.getInstance ("hmacmd5"); // SecretKey key = keygen.geRekeKey (); // Esta chave gerada cada vez é diferente, pbekeyspec Keyspec = new PBeKeyspec ("Randomey^(^&*^%$". Código de autenticação "(MAC) Algoritmo. * Mac fornece uma maneira de verificar a integridade das informações transmitidas ou armazenadas em mídia não confiável com base em chaves secretas. função (como md5 ou sha-1) */ mac = mac.getInstance ("hmacmd5"); } / *** A criptografia md5 usa a mensagem Digest Messagedigest para lidar* @THOWSOWS Exceção* / public static string codeByMd5 (string str) lança a exceção {Messagedigest md5; md5 = Messagedigest.getInstance ("md5"); md5.Update (str.getBytes ()); // Atualize o resumo primeiro byte [] DIGEST = md5.digest (); // O cálculo de hash é concluído executando operações finais, como preenchimento. Depois que esse método é chamado, o resumo é redefinido. / * * Use a matriz de bytes especificada para fazer a atualização final do resumo e concluir o cálculo resumido. * Ou seja, esse método chama primeiro a atualização (entrada), * passa a matriz de entrada para o método de atualização e depois chama Digest (). */ // byte [] Digest = md5.digest (str.getBytes ()); String hex = tohex (diger); System.out.println ("MD5 Resumo:" + Hex); retornar hexadecimal; } / *** Resumo dos dados do arquivo* @Throws Exception* / public static void md5file () lança exceção {Messagedigest Messagedigest = Messagedigest.getInstance ("md5"); DigestOutputStream DOS = new DigestOutputStream (new FileOutputStream (new File ("abc.txt")), Messagedigest); Dos.Write ("Povo chinês ... & ()) f*(214) admin*". getBytes ()); dos.close (); byte [] Digest = Messagedigest.Digest (); System.out.println ("Escreva um arquivo usando o fluxo, o resumo do arquivo é:" + tohex (diger)); DigestInputStream dis = new DigestInputStream (new FileInputStream (novo arquivo ("abc.txt")), Messagedigest); byte [] buf = novo byte [100]; int len; while ((len = Dis.Read (BUF))! = -1) {System.out.println ("Os dados são:" + new String (BUF, 0, Len)); } dis.close (); byte [] Digest2 = Messagedigest.Digest (); // Quando o fluxo é lido, o arquivo é concluído e o resumo é o mesmo que quando está escrito System.out.println ("Use Stream para ler o arquivo, o resumo do arquivo é:" + tohex (Digest2)); } / ** * MD5 Digest é para hexadecimal * @param digery * @return * / string estática privada tohex (byte [] diger) {stringbuilder sb = new stringbuilder (); int len = diger.length; String out = null; for (int i = 0; i <len; i ++) {// out = Integer.toHexString (0xff & digers [i]+0xabcdef); // adicione qualquer sal out = integer.tohexString (0xff & digery [i]); // método original if (out.length () == 1) {sb.append ("0"); // se você adicionar 0 na frente de 1 bit} sb.append (out); } return sb.toString (); }}PS: Aqui estão mais duas ferramentas de criptografia MD5 para você. Amigos interessados podem se referir a ele:
Ferramenta de criptografia online do MD5:
http://tools.vevb.com/password/createmd5password
Online md5/hash/sha-1/sha-2/sha-256/sha-512/sha-3/ripemd-160 ferramenta de criptografia:
http://tools.vevb.com/password/hash_md5_sha