javaにおけるMD 5暗号化の例
javaにおけるMD 5暗号化の例
前言:
今日はJAVAプログラミングを利用して、MD 5を通じて暗号化を実現し、ユーザー登録の原理を検証することを実現します。
主にプロセスです
元のbyteファイルをMD 5で暗号化して完了しました。これを私たちが分かる暗号文に変換します。(MD 5で生成されたbyteデータは識別できません。)
主なコードは以下の通りです
前言:
今日はJAVAプログラミングを利用して、MD 5を通じて暗号化を実現し、ユーザー登録の原理を検証することを実現します。
主にプロセスです
元のbyteファイルをMD 5で暗号化して完了しました。これを私たちが分かる暗号文に変換します。(MD 5で生成された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<a href="mailto:[email protected]" rel="external nofollow" > </a>
* @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);
}
}
疑問があれば、メッセージをお願いします。あるいは、当駅のコミュニティで交流して討論してください。ありがとうございます。