m_shige1979のときどきITブログ

プログラムの勉強をしながら学習したことや経験したことをぼそぼそと書いていきます

Github(変なおっさんの顔でるので気をつけてね)

https://github.com/mshige1979

Javaで暗号化処理

なんか一括でやるのないの?

ライブラリとしてはありそうですけどJava共通ではなさそう

参考資料

qiita.com
基本↑見て

やりたいこと

指定の文字列にソルト文字列とかを設定して変な文字列にしたい…

実装

Sample01.java
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.UUID;

public class Sample01 {
	
//	private static final String ALGORITHM = "SHA-256";
//	private static final String ALGORITHM = "SHA-384";
	private static final String ALGORITHM = "MD5";
	
	public static void main(String[] args) {
		
		for(int i=0;i<10;i++) {
			String res = null;
			String id = UUID.randomUUID().toString();
			DateTimeFormatter f = DateTimeFormatter.ofPattern("yyyyMMddHHmmssSSS");
			String time = String.valueOf(LocalDateTime.now().format(f));
			String value = id + time;
			
			//
			res = value + " -> " + hashValue(value);
			System.out.println(res);
		}

	}
	
	public static String hashValue(String id) {
		String res = null;
		StringBuilder sb = null;
		
		try {
			MessageDigest md = MessageDigest.getInstance(ALGORITHM);
			md.update(id.getBytes());
			sb = new StringBuilder();
		    for (byte b : md.digest()) {
		        String hex = String.format("%02x", b);
		        sb.append(hex);
		    }
		    res = sb.toString();
		    
		} catch (NoSuchAlgorithmException e) {
			e.printStackTrace();
		}
		
		return res;
	}

}

e1242272-9bf8-442d-8117-9e3ad4b3647720170111232904271 -> 521ef152cb07f806660753e403095556
c30a9dfa-e253-4972-b3aa-4a76b6471faa20170111232904288 -> c0463468c4615db586e57a1453b3c1fe
a2f03642-2ac3-4b37-b02a-fd0722224abc20170111232904289 -> 0a6a0cfafed084796377e6047884422e
411000d1-b143-4742-bf05-6531ba1c16a520170111232904291 -> 1e21f51ec30dc0d8f17f17018b87855b
fbac2ec4-8502-48b7-a551-20209346272120170111232904292 -> f34c894ee82d26761773b7be4e32e3e8
cf5c4f1c-d3f3-4648-aaf6-7cbeb1cdbe5720170111232904293 -> 38ad47a89b2f9407fee73605245a85ac
0656800a-1ec1-4ba7-9260-195a769d620820170111232904294 -> 1ce74a1b8862d761d538ec280b8adac3
1f9c7c16-58ad-4991-8ba8-f9fa3d0564ca20170111232904295 -> d0b63e2b96bbfedf16d41aa3142261ba
05f11ff3-be44-4a76-ad46-31534d466e9f20170111232904296 -> 62beae12ce3b618c842971995c4737d0
06534f7f-c6e1-4c52-be91-233bb6477c2320170111232904297 -> 140ba0d50f0a32ae5631a34e77aae581

今回は乱数文字に日時を付与して暗号化してみた
使い捨ての暗号ならこのレベルで良いはず…