我們的生活中都離不開各種的應用程式,這意味著我們要記憶更多帳號密碼。雖然 Google 有密碼管理工具,但是否遇過瀏覽器所記錄的密碼全都消失的情況嗎?或者使用第三方登入時卻忘記使用哪個應用程式的帳號?現在就讓我們開始製作安全且方便的鑰匙圈。
首先,從鑰匙圈樣品 Clone 到本地端。接下來,通過執行以下指令,就可以輕鬆擁有一個本地端的服務:
docker-compose up --build
使用 AES 加密技術,輕鬆的保護帳號密碼。對此專案的加解密流程有興趣的話可以參考這個檔案。如果想深入了解加密原理,請查看其他專業的加密原理文章。
以下是一個加密請求的範例,依照範例格式填入想被保護的帳號密碼。在加密過程中會需要一個金鑰,然而在此專案中會根據 Config 金鑰的長度而自動生成。
curl --location --request POST '127.0.0.1/api/v1/keychains/encryption' \
--header 'Content-Type: application/json' \
--data-raw '{
"keys": [
{
"application": "google.com",
"account": "admin",
"password": "password"
},
{
"application": "facebook.com",
"account": "root",
"password": "password"
}
]
}'
加密後會取得密文以及剛剛自動生成的金鑰,請務必保管好這兩樣,少了一樣或是有錯誤解密都會解不出來唷!
{
"Code": "ge1DE/GRtdScYh93apUR1UxXLE3m7uB+pUPHd0ajWMc9S9wildVS07fxougKM7WRknQsOVO0356MmCDwmG30tk6r3R24Eyxoh/2CNiqCAkNf2QLcAa1kmzjbCYUr/DMyUWXzk6ElCMTMbRjWJTuihtwGnUOum/C10Rq3NLQKzB0TCxp5byLLkIM93sTAaoNkLFAzU+NgneyOSocekzWGdWvUYoC7",
"Secret": "UTjvkFMK27TBItjpUVzLoKijq0zzswEt"
}
解密只需將加密後的結果填回去,即可獲得原文。
curl --location --request POST '127.0.0.1/api/v1/keychains/decryption' \
--header 'Content-Type: application/json' \
--data-raw '{
"code": "ge1DE/GRtdScYh93apUR1UxXLE3m7uB+pUPHd0ajWMc9S9wildVS07fxougKM7WRknQsOVO0356MmCDwmG30tk6r3R24Eyxoh/2CNiqCAkNf2QLcAa1kmzjbCYUr/DMyUWXzk6ElCMTMbRjWJTuihtwGnUOum/C10Rq3NLQKzB0TCxp5byLLkIM93sTAaoNkLFAzU+NgneyOSocekzWGdWvUYoC7",
"secret": "UTjvkFMK27TBItjpUVzLoKijq0zzswEt"
}'
{
"keys": [
{
"application": "google.com",
"account": "admin",
"password": "password"
},
{
"application": "facebook.com",
"account": "root",
"password": "password"
}
]
}
AES 加密技術會根據明文的長度而變長,因此盡量把原文的結構變得更精簡一些,可以獲得更簡短的密文。喜歡的朋友也可以下載來自己改造一番變成自己的鑰匙圈樣式。
最後分享身為 Golang 新手這次遇到的一些問題: