SHA1
пакет com.stone.security; импортировать java.io.bytearrayinputstream; Импорт java.io.file; импортировать java.io.fileinputstream; Импорт java.io.fileOutputStream; импортировать java.security.digestinputstream; импортировать java.security.digestoutputstream; Импорт java.security.messagedigest; импортировать java.util.arrays; Импорт javax.crypto.mac; Импорт javax.crypto.secretkey; импортировать javax.crypto.secretkeyfactory; Импорт javax.crypto.spec.pbekeyspec; открытый класс sha {public static void main (string [] args) бросает исключение {encodebymac ("China op ... &*() ... & 802134 ..."); Encodebysha ("China Op ... &*() ... & 802134 ..."); Shafile (); } / ** * Сводка сообщения с использованием алгоритма Mac * @param Data * @throhs Exception * / public static void encodebymac (строки данных) Throws Exception {// keygenerator keygen = keygenerator.getInstance ("hmacsha1"); // secretKey key = keyGen.GenerateKey (); // Этот ключ, сгенерированный каждый раз, отличается, pbekeyspec keyspec = new pbekeyspec ("randomkey^(^&*^%$". ToChararray ()); SecretKeyFactory KeyFactory = secretKeyFactory.getInstance ("pbeWithmd5anddes"); ceverskeke keyfactory.generatesecrete ("keyspec); /********************** Код аутентификации "(MAC) алгоритм. * MAC предоставляет способ проверить целостность информации, передаваемой или хранящейся на ненадежных носителях на основе секретных клавиш. Хэш-функция (такая как MD5 или SHA-1) */ Mac Mac = Mac.GetInstance ("Hmacsha1"); mac.init (ключ); byte [] dest = mac.dofinal (data.getbytes ()); System.out.println (dest.length); System.out.println ("Mac Summary:" + Arrays.tostring (dest)); } / *** SHA1 шифрование использует сообщения Digest MessagedIgest для обработки* @Throws Exception* / public Static String Encodebysha (String Str) Throws Exception {messagedigest sha1; sha1 = massagedigest.getinstance ("sha1"); // Следующие три недоступны // sha1 = massagedigest.getinstance ("sha256"); // sha1 = messagegest.getinstance ("sha384"); // sha1 = messagegest.getinstance ("sha512"); sha1.update (str.getbytes ()); // Обновление суммарного плана первого байта [] digest = sha1.digest (); // Хэш расчет завершается за счет выполнения окончательных операций, таких как прокладки. После того, как этот метод называется, резюме сбросится. / * * Используйте указанный байт -массив, чтобы сделать окончательное обновление резюме и завершить расчет сводки. * То есть этот метод сначала вызывает обновление (вход), * передает массив ввода в метод обновления, а затем вызывает Digest (). */ // byte [] digest = sha1.digest (str.getbytes ()); String hex = toHex (digest); System.out.println ("SHA1 Сводка:" + hex); вернуть гекс; } / *** Сводка данных файла* @Throws Exception* / public static void shafile () бросает exection {MessageDigest messageDigest = messagedigest.getInstance ("sha1"); DigestOutputStream dos = new DigestOutputStream (new FileOutputStream (новый файл ("abc.txt")), MessageDigest); dos.write ("Китайский народ ... & ()) f*(214) admin*". getbytes ()); dos.close (); byte [] digest = messagegest.digest (); System.out.println («Напишите файл с использованием потока, резюме файла:« + toHex (digest)); DigestInputStream dis = new DigestInputStream (new FileInputStream (новый файл ("abc.txt")), MessageDigest); byte [] buf = новый байт [100]; int len; while ((len = dis.read (buf))! = -1) {System.out.println («Чтение данных:» + new String (buf, 0, len)); } dis.close (); byte [] digest2 = messagegest.digest (); // Когда поток читается, файл закончен, а дайджест такой же, как и при написании System.out.println («Используйте поток для чтения файла, дадест файла:» + toHex (digest2)); } / ** * SHA1 Digest - это шестнадцатеричный * @param Digest * @return * / private Static String tohex (byte [] digest) {StringBuilder sb = new StringBuilder (); int len = digest.length; String Out = null; for (int i = 0; i <len; i ++) {// out = integer.tohexstring (0xff & digest [i]+0xabcdef); // Добавить любую соль = integer.tohexstring (0xff & digest [i]); // исходный метод if (out.length () == 1) {sb.append ("0"); // Если вы добавите 0 перед 1 битом} sb.append (out); } вернуть sb.toString (); }}
MD5
MD5 (Алгоритм 5 -й расстояния сообщений), пятое издание алгоритма Digest сообщений. Digest Message - это алгоритм: независимо от того, как долго проходят исходные данные, результат подачи сообщений имеет фиксированную длину; Это необратимый алгоритм. Изменения в любом битах исходных данных приведут к большим различиям в результатах дайджеста сообщения, и вероятность расчета исходных данных на основе результатов чрезвычайно низкая.
Дайджест сообщения можно рассматривать как отпечаток пальца исходных данных. Различные отпечатки пальцев будут отличать исходные данные.
пакет com.stone.security; импортировать java.io.bytearrayinputstream; Импорт java.io.file; импортировать java.io.fileinputstream; Импорт java.io.fileOutputStream; импортировать java.security.digestinputstream; импортировать java.security.digestoutputstream; Импорт java.security.messagedigest; импортировать java.util.arrays; Импорт javax.crypto.mac; Импорт javax.crypto.secretkey; импортировать javax.crypto.secretkeyfactory; Импорт javax.crypto.spec.pbekeyspec; открытый класс md5 {public static void main (string [] args) бросает исключение {encodebymac ("China op ... &*() ... & 802134 ..."); encodebymd5 ("China op ... &*() ... & 802134 ..."); md5file (); } / ** * Сводка сообщения с использованием алгоритма Mac * @param Data * @throhs Exception * / public static void encodebymac (String Data) Throws Exception {// Keygenerator Keygen = KeyGenerator.getInstance ("hmacmd5"); // secretKey key = keyGen.GenerateKey (); // Этот ключ, сгенерированный каждый раз, отличается, pbekeyspec keyspec = new pbekeyspec ("randomkey^(^&*^%$". ToChararray ()); SecretKeyFactory KeyFactory = secretKeyFactory.getInstance ("pbeWithmd5anddes"); ceverskeke keyfactory.generatesecrete ("keyspec); /********************** Код аутентификации "(MAC) Алгоритм. * Mac предоставляет способ проверить целостность информации, передаваемой или хранящейся на ненадежных носителях на основе секретных клавиш. Хэш-функция (такая как MD5 или SHA-1) */ Mac = Mac.GetInstance ("hmacmd5"); } / *** MD5 Encryption использует сообщения Digest MessageGest для обработки* @Throws Exception* / public Static String EncodeBymd5 (String Str) Throws Exception {MessagedIgest MD5; md5 = massagedigest.getinstance ("md5"); md5.update (str.getbytes ()); // Обновление суммации первого байта [] digest = md5.digest (); // Хэш расчет завершается за счет выполнения окончательных операций, таких как прокладки. После того, как этот метод называется, резюме сбросится. / * * Используйте указанный байт -массив, чтобы сделать окончательное обновление резюме и завершить расчет сводки. * То есть этот метод сначала вызывает обновление (вход), * передает массив ввода в метод обновления, а затем вызывает Digest (). */ // byte [] digest = md5.digest (str.getbytes ()); String hex = toHex (digest); System.out.println ("MD5 Redugary:" + hex); вернуть гекс; } / *** Сводка данных файла* @Throhs Exception* / public static void md5file () бросает исключение {messageDigest messagedigest = messagedigest.getInstance ("md5"); DigestOutputStream dos = new DigestOutputStream (new FileOutputStream (новый файл ("abc.txt")), MessageDigest); dos.write ("Китайский народ ... & ()) f*(214) admin*". getbytes ()); dos.close (); byte [] digest = messagegest.digest (); System.out.println («Напишите файл с использованием потока, резюме файла:« + toHex (digest)); DigestInputStream dis = new DigestInputStream (new FileInputStream (новый файл ("abc.txt")), MessageDigest); byte [] buf = новый байт [100]; int len; while ((len = dis.read (buf))! = -1) {System.out.println («Чтение данных:» + new String (buf, 0, len)); } dis.close (); byte [] digest2 = messagegest.digest (); // Когда поток читается, файл закончен, а дайджест такой же, как и при написании System.out.println («Используйте поток для чтения файла, дадест файла:» + toHex (digest2)); } / ** * MD5 Digest - это шестнадцатеричный * @param Digest * @return * / private Static String tohex (byte [] digest) {stringBuilder sb = new StringBuilder (); int len = digest.length; String Out = null; for (int i = 0; i <len; i ++) {// out = integer.tohexstring (0xff & digest [i]+0xabcdef); // Добавить любую соль = integer.tohexstring (0xff & digest [i]); // исходный метод if (out.length () == 1) {sb.append ("0"); // Если вы добавите 0 перед 1 битом} sb.append (out); } вернуть sb.toString (); }}PS: Вот еще два инструмента шифрования MD5 для вас. Заинтересованные друзья могут ссылаться на это:
Инструмент онлайн -шифрования MD5:
http://tools.vevb.com/password/createmd5password
Онлайн MD5/HASH/SHA-1/SHA-2/SHA-256/SHA-512/SHA-3/RIPEMD-160 Инструмент шифрования:
http://tools.vevb.com/password/hash_md5_sha