자바 의 MD5 암호 화 인 스 턴 스

5712 단어
자바 의 MD5 암호 화 인 스 턴 스
선언:
오늘 은 JAVA 프로 그래 밍 을 이용 하여 MD5 를 통 해 암호 화 를 실현 하 는 동시에 사용자 로그 인 원 리 를 검증 하 는 것 을 배 울 것 입 니 다.
주로 과정:
원본 byte 파일 을 MD5 로 암호 화한 후다시 우리 가 알 아 볼 수 있 는 비밀문서 로 바 꾸 기 (MD5 에서 생 성 된 byte 데이터, 우 리 는 식별 할 수 없습니다)
주요 코드 는 다음 과 같다.

package techDemo;

import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.Scanner;

import org.junit.Test;

import sun.misc.BASE64Encoder;

/**
 * MD5    
 * @author후난 성
 * @version 2017-5-30   1:34:51
 * @fileName MD5.java
 */
public class MD5 {

  public static void main(String[] args) throws Exception {
    MessageDigest md = MessageDigest.getInstance("MD5");
    //   :
    String pwd = "12345";
    // digese---  byte       
    byte b []= md.digest(pwd.getBytes());
    System.out.println(b.length); // 16
    //   byte b []             

    //     :BASE64Encoder (     )
    BASE64Encoder bd = new BASE64Encoder();
    //  1:
    String strpwd1 = bd.encode(b);
    System.out.println(strpwd1);

    //     :      byte      16               32
    String strpwd2 = "";
    for(byte i:b){
      //          16   
      String s = Integer.toHexString(i & 0xff);
      //  i<16 ,   1     ,             32
      if(s.length()==1){
        s = s + "0";
      }
      strpwd2 += s;
    }
    System.out.println(strpwd2);
/*       
    16
    gnzLDuqKcGxMNKFokfhOew==
    827ccbe0ea8a706c4c34a16891f84e7b */
  }

  //         
  @Test
  public void demoLogin()throws Exception{
    //         ,                  
    //    ,               ,               

    //         123456789,     
    String pwd = "123456789";
    String Mpwd = Md5(pwd);
    Scanner sc = new Scanner(System.in);
    while(true){
      System.out.println("     ");
      String p = sc.nextLine();
      if(Mpwd.equals( Md5(p))){
        System.out.println("    ");
        break;
      }else{
        System.out.println("    ,     ");
      }

    }
  }

  private String Md5(String pwd) throws NoSuchAlgorithmException {
    String Mpwd ="";
    MessageDigest md = MessageDigest.getInstance("MD5");
    byte b [] = md.digest(pwd.getBytes());
    for(byte i:b){
      String s = Integer.toHexString( i & 0xff);
      if(s.length()==1){
        s = s +"0";
      }
      Mpwd = s + pwd;
    }
    return Mpwd;
  }

}


다음은 저희 선생님 코드 입 니 다. 더 디 테 일 하 게.

package techDemo;

import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

import org.junit.Test;

import sun.misc.BASE64Encoder;

public class Md5Demo {
  //     java.security.MessageDigest
  @Test//md5       
  public void demo1() throws Exception{
    MessageDigest md = MessageDigest.getInstance("MD5");
    String pwd="ewi24343423";
    byte b1[] = pwd.getBytes();
    byte b2[] = md.digest( b1 ); //  md      b1[]       b2[]

    //  ,  md5      ,              ,        (   ) 16    
    //         --- demo2()  

    System.out.println("len:"+b2.length); //   :16 ---md5     ,         ,    16     

    for(byte b: b2){
      //System.out.print(b+" ");
      System.out.print((char)b+" ");
    }
    System.out.println();
  }


  @Test// md5               ---     ,      ,    16  
  public void demo2() throws Exception{
    MessageDigest md = MessageDigest.getInstance("MD5");
    String pwd="ewi24343423";
    byte b1[] = pwd.getBytes();
    byte b2[] = md.digest( b1 ); //  md      b1[]       b2[]

    System.out.println("len:"+b2.length); //   :16

    BASE64Encoder en = new BASE64Encoder();
    String pwd2 = en.encode(b2);
    System.out.println(pwd2);
  }

  /*
   * demo2()     :
   * 1.           16    
   * 2.      BASE64Encoder API   ,          
   *          ,        ,             !
   *  ---     ,         
   */

  @Test //       , md5               16    
  public void demo3()throws Exception{
    MessageDigest md = MessageDigest.getInstance("MD5");
    String pwd="e655656w23";
    byte b1[] = pwd.getBytes();
    byte b2[] = md.digest( b1 ); //  md      b1[]       b2[]

    System.out.println("len:"+b2.length); //   :16

    //     , 16 byte       32  16   
    String pwd2="";
    for(byte i: b2){
      String s = Integer.toHexString(i & 0xff); //  i<16 s    ,  >=16 i    s    
      if(s.length()==1){
        s ="0"+s; // s ="f"+s;
      }
      pwd2 +=s;
    }
    pwd2 = pwd2.toUpperCase();
    System.out.println(pwd2.length());
    System.out.println(pwd2);
  }

}


궁금 한 점 이 있 으 시 면 메 시 지 를 남기 거나 본 사이트 의 커 뮤 니 티 에 가서 토론 을 교류 하 세 요. 읽 어 주 셔 서 감사합니다. 도움 이 되 셨 으 면 좋 겠 습 니 다. 본 사이트 에 대한 지지 에 감 사 드 립 니 다!

좋은 웹페이지 즐겨찾기