2016年4月24日 星期日

使用 openssl 編解碼小試

使用 RSA 產生的 public key 是用來編碼用的, 而 private key 則是用來解碼用的. 通常使用在短的詞句編解碼上, 例如密碼等, 寫一個  Makefile 方便參考使用:
PRIKEY=key.pem
PUBKEY=pub$(PRIKEY)
BITS=2048
# Use PUBKEY to encrypt, but use PRIKEY to decrypt
test="This is a test string"

genkey:
openssl genrsa -out $(PRIKEY) $(BITS)
openssl rsa -pubout -in $(PRIKEY)  -out $(PUBKEY)

testrsa:
echo -n $(test) | openssl rsautl -encrypt -inkey $(PUBKEY) -pubin  | openssl rsautl -decrypt  -inkey $(PRIKEY)

testaes: echo -n $(test) | openssl aes-256-cbc -a -k password | openssl aes-256-cbc -a -k password -d

clean:
rm -f  $(PRIKEY) $(PUBKEY) *.pem
直接輸入 make 就會產生 key.pem (private key) 及 pubkey.pem (public key)檔
輸入 make testrsa 或 make testaes 會測試編解碼程序是否將語句正確還原, make clean 會刪除所有 *.pem 檔
echo -n 是不要讓 echo 自動在語句上添加換行符號(\n), 接著將輸出傳給編碼程序,最後再傳給解碼程序, 還原出原始語句顯示在螢幕上

另外 openssl 可以使用 AES 將大的檔案編解碼
編碼:
           openssl aes-256-cbc  -a   -k  password  -in inputfile -out encryptfile
解碼:
           openssl aes-256-cbc   -a  -k  password  -d -in encryptfile -out orgfile
aes-256-cbc 使用 aes 256 byte 編/解碼
-a    是使用 base64 編/解碼, 方便瀏覽
-k     password 可以輸入任何易記碼
-d    是開啟解碼程序-in   輸入所要的編/解碼檔案
-out 產生所要的輸出檔案

沒有留言: