一次性密碼本:窮舉也破解不了的密碼

前幾天看密碼學的書介紹了一次性密碼本,覺得很有意思

世界上絕大部份的密碼,只要使用暴力破解法去嘗試所有的排列組合

一定會有被猜中的一天(假如今天存在一台運算速度極快的電腦)

可是一次性密碼本特別之處就在於就算嘗試所有的排列組合

也無法確認哪組是正確的解密結果

 
一次性密碼本的特性:

  • 顧名思義是一次性使用,使用後必須銷毀
  • 密碼必須是真隨機數組成的(True Random Number)
  • 密碼與明文必須等長

 
閱讀更多

以公開的方式交換資訊生成對稱式金鑰

最近讀的密碼學的書裡面介紹了Diffie–Hellman Key Exchange,覺得很有趣,紀錄一下

 

使用情節

小明想與小華想利用對稱式加密建立加密連線

可是不管是任何一方先產生金鑰再傳送給另外一方都有被第三方監聽的風險

這時,Diffie–Hellman Key Exchange就派上用場了

Diffie–Hellman Key Exchange用於當溝通的雙方處於不安全連線(被第三方監聽)下

仍能交換資訊生成對稱式金鑰建立加密連線

閱讀更多

Git修改local端、server端的branch名稱

之前為了測試新功能而建立新的branch

原本想說只是測試看看,所以就暫時隨便取一個名字

到最後發現名字跟branch的內容有點文不對題

於是去查了一下git怎麼改local端跟server端的branch名稱

 

改local端的branch名稱

git branch -m {欲改名的branch} {branch新名稱}

這樣只有改好local端的名稱

還要把新名稱的branch push到server,並且把舊名稱的branch刪除

git push origin {新名稱的branch} :{改名後欲刪除的branch}

 

改server端的branch名稱

如果欲改名的branch並不存在local端,只存在server端

在server端複製一份欲改名的branch,並且重新取好新名字

git branch {branch新名稱} origin/{欲改名的branch}

把剛剛的操作push至server

git push origin {新名稱的branch}

把舊branch從server端上刪除

git push origin :{改名後欲刪除的branch}

[Java] SQL ResultSet轉換成JSON Array

剛好遇到需要將query出來的result轉成json再pass給前端

怕以後又遇到同樣的需求,先筆記下來

記得import

import org.json.JSONArray;
import org.json.JSONObject;
import java.sql.ResultSet;

轉換的method

public static JSONArray convert(ResultSet resultSet) throws Exception {

	JSONArray jsonArray = new JSONArray();

	while (resultSet.next()) {

		int columns = resultSet.getMetaData().getColumnCount();
		JSONObject obj = new JSONObject();

		for (int i = 0; i < columns; i++)
			obj.put(resultSet.getMetaData().getColumnLabel(i + 1).toLowerCase(), resultSet.getObject(i + 1));

		jsonArray.put(obj);
	}
	return jsonArray;
}