第72節 - Unity: Encrypt and Decrypt Text File
這一節我會介紹Unity: Encrypt and Decrypt Text File,我在第69節 - Unity: File I/O, Read & Write Text File & PlayerPrefs介紹過Unity: File I/O & PlayerPrefs,介紹了二種方法(Read & Write Text File和PlayerPrefs)來讀取和儲存數據。
但有時候把資料儲存在Text File內是不安全的,任何人都可以更改Text File的內容,解決方法就是把Text File加密,每一次就讀取加密了的資料,我會詳細介紹。
我會介紹以下兩個方法:
Method 1: Encrypt Text File, Decrypt Text File then Delete Decrypted Text FileMethod 2: Encrypt Text File, Decrypt Text File in Script without physical creating Decrypted Text File
1) Method 1 - Encrypt Text File, Decrypt Text File then Delete Decrypted Text File
第一個方法比較簡單,首先建立一個簡單Text File,把它加密(Encrypt),用把加密了的檔案解密(Decrypt),並儲存在一個臨時產生的Text File內,當程式完成讀取後,臨時產生的Text File就會被刪除。
1.1) Encrypt Text File
首先,我會用Notepad建立一個人簡單Text File,用C#程式把Text File的資料加密,如下圖:

- 用Notepad建立一個人簡單Text File,用C#程式把Text File的資料加密。

- 選擇Main Camera。
- 建立一個C# Script - MyScript1,再把MyScript1拖放到Main Camera內。

- 建立一個Assets/Resources的Directory。
- 把一個用Notepad建立好的myfile1.txt拖放到Assets/Resources的Directory內。

- 建立三個Text File路徑:
i) 資料檔案路徑 - sourceFile - myfile1.txt
ii) 加密檔案路徑 - encryptedFile - myfile2.txt
iii) 解密檔案來源 - decryptedFile - myfile3.txt
- 建立一個加密方法 - EncryptFile()。
- 建立一個解密方法 - DecryptFile()。
- 執行加密方法 - EncryptFile()。
注意: 這裡不會詳細介紹 EncryptFile()和DecryptFile()方法的內容,大家只要懂得如何用就足夠,如果大家對Encryption和Decryption有興趣,可以自行學習。

- 執行程式,加密了的myfile2就會產生。
1.2) Decrypt Text File then Delete Decrypted Text File
下一步會把剛剛加密了的myfile2 解密,儲存在一個臨時產生的Text File - myfile3內,當程式完成讀取後,臨時產生的Text File - myfile3就會被刪除,如下圖:

- 把剛剛加密了的myfile2 解密,儲存在一個臨時產生的Text File - myfile3內。
- 讀取臨時產生的解密檔案 - myfile3。
- 當程式完成讀取後,臨時產生的Text File - myfile3就會被刪除。

- 建立一個C# Script - MyScript2,再把MyScript2拖放到Main Camera內。

- 建立三個人Text File路徑:
i) 資料檔案路徑 - sourceFile - myfile1.txt
ii) 加密檔案路徑 - encryptedFile - myfile2.txt
iii) 解密檔案來源 - decryptedFile - myfile3.txt - 建立一個加密方法 - EncryptFile()。
- 建立一個解密方法 - DecryptFile()。
- 執行加密方法 - DecryptFile()。
注意: 這裡不會詳細介紹 EncryptFile()和DecryptFile()方法的內容,大家只要懂得如何用就足夠,如果大家對Encryption和Decryption有興趣,可以自行學習。 - 當程式完成讀取後,用File.Delete()方法把解密檔案 - myfile3.txt刪除。

- 執行程式,當程式完成讀取後,用File.Delete()方法把解密檔案 - myfile3.txt刪除。
2) Method 2- Encrypt Text File, Decrypt Text File in Script without Physical Creating Decrypted Text File
第二個方法比較安全,首先建立一個簡單Text File,把它加密(Encrypt),把加密了的檔案解密(Decrypt),與第一個方法不同,因為程式會讀取加密檔案內的資料,完全沒有產生一個臨時的解密檔案。
2.1) Encrypt Text File
首先,我會用Notepad建立一個人簡單Text File,用C#程式把Text File的資料加密,如下圖:

- 用Notepad建立一個人簡單Text File,用C#程式把Text File的資料加密。

- 建立一個C# Script - MyScript3,再把MyScript3拖放到Main Camera內。

- 建立二個Text File路徑:
i) 資料檔案路徑 - sourceFile - myfile1.txt
ii) 加密檔案路徑 - encryptedFile - myfile4.txt
- 建立一個加密方法 - EncryptBinaryFile()。
- 建立一個只讀取解密資料的方法 - LoadEncryptedTextFile()。
- 執行加密方法 - EncryptBinaryFile()。
注意: 這裡不會詳細介紹 EncryptFile()和DecryptFile()方法的內容,大家只要懂得如何用就足夠,如果大家對Encryption和Decryption有興趣,可以自行學習。

- 執行程式,加密了的myfile4就會產生。
2.2) Decrypt Text File in Script without Physical Creating Decrypted Text File
下一步會把剛剛加密了的myfile4用LoadEncryptedTextFile()方法只讀取解密資料,完全沒有產生一個臨時的解密檔案,如下圖:

- 把剛剛加密了的myfile4用LoadEncryptedTextFile()方法只讀取解密資料,完全沒有產生一個臨時的解密檔案。

- 建立一個C# Script - MyScript4,再把MyScript4拖放到Main Camera內。

- 建立二個Text File路徑:
i) 資料檔案路徑 - sourceFile - myfile1.txt
ii) 加密檔案路徑 - encryptedFile - myfile4.txt
- 建立一個加密方法 - EncryptBinaryFile()。
- 建立一個只讀取解密資料的方法 - LoadEncryptedTextFile()。
- 執行LoadEncryptedTextFile()方法 。
注意: 這裡不會詳細介紹 EncryptFile()和decryptFile()方法的內容,大家只要懂得如何用就足夠,如果大家對Encryption和Decryption有興趣,可以自行學習。

- 執行程式,只讀取解密資料。