Алгоритм шифрования Java Algorithm-MD5 и хэш-хэш с Алгоритром шифрования секретного ключа
Недавно я узнал знания об алгоритмах шифрования и использовал шифрование MD5. У Baidu много онлайн -информации, но она не очень подробно. Здесь я разберу, как реализовать алгоритм шифрования с помощью шифрования MD5 и хэш -хэша с секретными ключами. Вы можете посмотреть.
Код реализации:
пакет com.ompa.common.utils; import java.security.messagedigest; import java.security.nosuchalgorithmexception; импорт javax.crypto.mac; импорт javax.crypto.secretkey; импорт javax.crypto.spec.secretkeyspec;/* zhangcd* @date 2016-4-29*/public class incryptutil {частная статическая конечная строка mac_name = "hmacsha1"; частная статическая конечная строка Encoding = "UTF-8"; Private Static Final String Key = "iloveYou";/ ****MD5 добавляет код для генерации 32-разрядочного кода MD5*/ public Static String String2md5 (String instr) {MessageDigest md5 = null; try {md5 = messagegest.getinstance ("md5"); } catch (Exception e) {System.out.println (e.toString ()); e.printstacktrace (); возвращаться ""; } char [] chararray = instr.tochararray (); byte [] bytearray = new Byte [chararray.length]; для (int i = 0; i <chararray.length; i ++) Bytearray [i] = (byte) chararray [i]; byte [] md5bytes = md5.digest (bytearray); StringBuffer hexValue = new StringBuffer (); for (int i = 0; i <md5bytes.length; i ++) {int val = ((int) md5bytes [i]) & 0xff; if (val <16) hexvalue.append ("0"); hexvalue.append (integer.tohexstring (val)); } вернуть hexvalue.toString (); } / ****Encryption MD5 генерирует 32-разрядный код MD5* / public Static String Stringmd5 (String instr) {return string2md5 (string2md5 (instry)); }/ *** Алгоритм шифрования и дешифрования*/ public static String convertmd5 (string instr) {char [] a = instr.tochararray (); for (int i = 0; i <a.length; i ++) {a [i] = (char) (a [i] ^ 't'); } String s = new String (a); возврат S; } / ** * hmac-sha1 * @param encrypttext * @param encryptkey * @return * @throws exception * / public static String hmacsha1encrypt (строка Encrypttext, String EncryptKey) Throws Exception {byte [] data = incryptkey.getbytes (encoding); SecretKey SecretKey = New SecretKeySpec (data, mac_name); Mac Mac = mac.getInstance (mac_name); Mac.Init (SecretKey); byte [] text = encrypttext.getbytes (кодирование); byte [] str = mac.dofinal (text); // Создать шестнадцатеричную струнку Hexstring = new StringBuffer (); // преобразовать массив байтов в шестнадцатеричный номер для (int i = 0; i <str.length; i ++) {String shahex = integer.tohexstring (str.] & 0xff); if (shahex.length () <2) {hexstring.append (0);} hexstring.append (shahex);} return hexstring.tostring ();} public static String revertsha1 (String instr) {try {return hmacsha1encrypt (instrats); blocke.printstacktrace (); return "";}} // Проверка основной функции Общедоступная статическая void main (String args []) Throws Exception {// hash hash с помощью секретного ключа строки шифрования tt = конвертха1 ("123456"); System.out.println (tt); // md5 incryption string string S = new String. System.out.println ("Origin:" + s); System.out.println ("После MD5:" + string2md5 (s)); System.out.println ("После MD5:" + stringmd5 (s));}}Спасибо за чтение, я надеюсь, что это поможет вам. Спасибо за поддержку этого сайта!