行政書士とブロックチェーン④
ブロックチェーンを作成するためには暗号化アルゴリズムが必要である。
暗号アルゴリズムとは、データを第三者から保護するために不可欠な、平文を意味不明な暗号文へ変換する計算手順です。主に共通鍵(AESなど高速)と公開鍵(RSAなど安全)の2方式に大別され、現代ではこれらを組み合わせたハイブリッド方式が主流です。セキュリティ強度と処理速度が選択の基準となります。
文字列→暗号化アルゴリズム(暗号化アルゴリズムSHA256で暗号
文を作成する。→暗号文(ハッシュ値)
具体的には
プログラム言語JAVAで
import java.security.MessageDigest;と入力しインポートすることで、暗号化SHA256アルゴリズムを使用することができます。
BLOkクラス1
Java
import java.security.MessageDigest;
public class Sha256Algorithm {
//String型のInput値を入力して、ハッシュ値を返す
public static String sha256(String input){
try { //メッセージ・ダイジェストは、任意サイズのデータを取得して固定長のハッシュ値を出力する安全な一方向のハッシュ機能です。
MessageDigest digest = MessageDigest.getInstance("SHA-256");
byte[] hash = digest.digest(input.getBytes("UTF-8"));
StringBuffer hexStr = new StringBuffer(); // 16進数としてハッシュ値を持つ
for (int i = 0; i < hash.length; i++) {
String hex = Integer.toHexStr(0xff & hash[i]);
if(hex.length() == 1) hexStr.append('0');
hexStr.append(hex);
}
return hexStr.toString();
}
catch(Exception e) {
throw new RuntimeException(e);
}
}
それから最初に作ったBlockクラス1で、Hashを計算するメソッドを追加します。
public String Hash() {
String hashValue = Sha256Algorithm.sha256( previousHash + data + Long.toString(timeStamp));
return hashValue;
}
次は暗号化メソッドをBlockクラス1にあるBlockコンストラクタに入れます。
Java
public class Block {
private String data; //データ保存用
public String hash;//デジタル署名を保存
public String previousHash;
private long timeStamp; //ブロックができた時間がわかるようにタイムスタンプも格納されています。
//Block コンストラクタ.
public Block(String data, String previousHash ) {
this.data = data;
this.previousHash = previousHash;//1つ前のブロックのHash
this.timeStamp = new Date().getTime();
this.hash = hash(); //ここにいれてます
}
}
BLOCKコントラクトは「デジタル版の自動販売機」です。ルール: 「お金を入れる」+「ボタンを押す」=「商品が出る」自動化: 誰かがルールを満たせば、自動販売機は自動で商品を出します(人が監視する必要はありません)。スマートコントラクトも、デジタル上で「AさんがBさんにコインを払う」という条件が満たされたら、自動的に「データ(NFTなど)が送られる」という処理が自動で実行されます。
ブロクチェーンはプログラム言語JAVAで作成するプログラムです。
JAVA言語を理解することが重要です。