자바 의 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);
}
}
궁금 한 점 이 있 으 시 면 메 시 지 를 남기 거나 본 사이트 의 커 뮤 니 티 에 가서 토론 을 교류 하 세 요. 읽 어 주 셔 서 감사합니다. 도움 이 되 셨 으 면 좋 겠 습 니 다. 본 사이트 에 대한 지지 에 감 사 드 립 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.