浏览代码

[공통][Common] 암호화: MD5, SHA-256 변환 유틸 추가

hyodong.min 7 年之前
父节点
当前提交
988fa5aaf6

+ 4 - 4
app/src/main/java/kr/co/zumo/app/lifeplus/manager/ActionBarManager.java

@@ -79,15 +79,15 @@ public class ActionBarManager {
     actionBar.show();
   }
 
-  /***********************************
-   * life-cycle
-   ***********************************/
-
   public void setDisplayShowHomeEnabled(boolean isEnabled) {actionBar.setDisplayShowHomeEnabled(isEnabled);}
 
   public void setDisplayShowCustomEnabled(boolean isEnabled) {actionBar.setDisplayShowCustomEnabled(isEnabled);}
 
   public void setCustomView(View view) {actionBar.setCustomView(view);}
+
+  /***********************************
+   * life-cycle
+   ***********************************/
   //  public void init() {
 //
 //  }

+ 16 - 0
app/src/main/java/kr/co/zumo/app/lifeplus/model/LifeplusPreferences.java

@@ -23,6 +23,8 @@ public class LifeplusPreferences {
   public final static String USER_ID = "user_id";
   public final static String TUTORIAL_DONE = "tutorial_done";
   public final static String DEVICE_UUID = "device_uuid";
+  public final static String ENCRYPTED_PIN = "encrypted_pin";
+
 
   /**
    * 기본 SharedPreferences 를 전달 받는다.
@@ -89,4 +91,18 @@ public class LifeplusPreferences {
   public String getUserId() {
     return preferences.get(USER_ID, "");
   }
+
+  /**
+   * 암호화된 핀
+   *
+   * @param pin 암호화 핀
+   */
+  public void setEncryptedPin(String pin) {
+    preferences.put(ENCRYPTED_PIN, pin);
+  }
+
+  public String getEncryptionPin() {
+    return preferences.get(ENCRYPTED_PIN, "");
+  }
+
 }

+ 35 - 1
app/src/main/java/kr/co/zumo/app/lifeplus/util/StringUtil.java

@@ -67,7 +67,7 @@ public class StringUtil {
   }
 
   /**
-   * 단방향 암호화
+   * 암호화 - SHA-1
    *
    * @param text "8364"
    * @return
@@ -82,6 +82,40 @@ public class StringUtil {
     return convertToHex(sha1hash);
   }
 
+  /**
+   * 암호화 - MD5
+   *
+   * @param str "3245"
+   * @return
+   */
+  public static String convertToMD5(String str) throws NoSuchAlgorithmException {
+    MessageDigest md = MessageDigest.getInstance("MD5");
+    return convertTo(md, str);
+  }
+
+  /**
+   * 암호화 - SHA-256
+   *
+   * @param str "3245"
+   * @return
+   */
+  public static String convertToSHA256(String str) throws NoSuchAlgorithmException {
+    MessageDigest sh = MessageDigest.getInstance("SHA-256");
+    return convertTo(sh, str);
+  }
+
+  private static String convertTo(MessageDigest messageDigest, String str) {
+    String encryptedString = "";
+    messageDigest.update(str.getBytes());
+    byte[] bytes = messageDigest.digest();
+    StringBuffer sb = new StringBuffer();
+    for (byte byteData : bytes) {
+      sb.append(Integer.toString((byteData & 0xff) + 0x100, 16).substring(1));
+    }
+    encryptedString = sb.toString();
+    return encryptedString;
+  }
+
   /**
    * url 의 프로토콜 인식 문자열 (http://, https:// 를 제거한다.
    *

+ 1 - 1
app/src/main/java/kr/co/zumo/app/lifeplus/view/presenter/SignUpPresenter.java

@@ -138,7 +138,7 @@ public class SignUpPresenter extends Presenter<SignUpModel, ISignUpView> {
    */
   public void setPin(String pin) {
     try {
-      signUpBean.setEncryptedPin(StringUtil.convertToSHA1(pin));
+      signUpBean.setEncryptedPin(StringUtil.convertToSHA256(StringUtil.convertToMD5(pin)));
     } catch (Exception e) {
       e.printStackTrace();
     }

+ 25 - 0
app/src/test/java/kr/co/zumo/app/lifeplus/util/StringUtilTest.java

@@ -2,6 +2,8 @@ package kr.co.zumo.app.lifeplus.util;
 
 import org.junit.Test;
 
+import java.security.NoSuchAlgorithmException;
+
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertTrue;
@@ -41,6 +43,29 @@ public class StringUtilTest {
     assertTrue(StringUtil.isValidPassword("q12`-=~!@#$%^&*()_+C")); // correct
   }
 
+  @Test
+  public void convertToMD5() {
+    try {
+      assertEquals("1bc29b36f623ba82aaf6724fd3b16718", StringUtil.convertToMD5("md5"));
+      assertEquals("c617ea9609ec341360765f6d29b5814e", StringUtil.convertToMD5("9238"));
+      assertEquals("7cf64379eb6f29a4d25c4b6a2df713e4", StringUtil.convertToMD5("2456"));
+    } catch (NoSuchAlgorithmException e) {
+      e.printStackTrace();
+    }
+
+  }
+
+  @Test
+  public void convertToSHA256() {
+    try {
+      assertEquals("b3abe5d8c69b38733ad57ea75e83bcae42bbbbac75e3a5445862ed2f8a2cd677", StringUtil.convertToSHA256("SHA256"));
+      assertEquals("b1d705bf58a21fff38bfff26ec5e7d368a15694cf506d0c5a852a3629169fdd0", StringUtil.convertToSHA256("9238"));
+      assertEquals("c0d427f8b875401198831f31edb981bf951a3b77f5ec5f336ad84a50ed831ac9", StringUtil.convertToSHA256("2456"));
+    } catch (NoSuchAlgorithmException e) {
+      e.printStackTrace();
+    }
+  }
+
   @Test
   public void removeProtocol() {
     assertEquals("192.168.0.10", StringUtil.removeProtocol("http://192.168.0.10"));