복호화가 없으므로 별도의 키가 없습니다. 또 키가 없으므로 SHA256 알고리즘을 돌려서는 항상 같은 결과가 떨어집니다. 1과 같은 단순한 값을 sha256으로 암호화했을 경우 항상 같은 값이 나오기 때문에 비밀번호 입력을 적당한 길이와 복잡성을 가지도록 유도하여 패스워드를 유추하는데 어렵도록 해야 합니다.
import java.security.MessageDigest;
public class Sha256 {
public static String encrypt(String planText) {
try{
MessageDigest md = MessageDigest.getInstance("SHA-256");
md.update(planText.getBytes());
byte byteData[] = md.digest();
StringBuffer sb = new StringBuffer();
for (int i = 0; i < byteData.length; i++) {
sb.append(Integer.toString((byteData[i] & 0xff) + 0x100, 16).substring(1));
}
StringBuffer hexString = new StringBuffer();
for (int i=0;i<byteData.length;i++) {
String hex=Integer.toHexString(0xff & byteData[i]);
if(hex.length()==1){
hexString.append('0');
}
hexString.append(hex);
}
return hexString.toString();
}catch(Exception e){
e.printStackTrace();
throw new RuntimeException();
}
}
}
'백엔드 > Java' 카테고리의 다른 글
하나의 프레임워크에서어 앱 업로드와 웹 업로드시 문제점 (0) | 2024.03.20 |
---|---|
PK (Auto_increment) 가져오기 (0) | 2024.03.20 |
@Async가 먹히지 않는 경우는 3가지 (0) | 2024.03.20 |
AES-256 (0) | 2024.03.20 |
알고리즘 (0) | 2024.03.20 |
같은 단어 제거 정규식 (0) | 2024.03.20 |
자바 정수범위 (0) | 2024.03.20 |
StringBuffer 와 StringBuilder 의 차이 (0) | 2024.03.20 |
댓글