Major Softwares

  INDEX PAGE

  1. 簡介
  2. Java, Android和LibGDX好書推介
  3. Java, Android和LibGDX要學的知識
  4. 用Windows寫Java程式
  5. 用Eclipse寫Java程式
  6. 用Eclipse寫Android程式
  7. 用Eclipse寫LibGDX程式
  8. Standard Java Naming Conventions
  9. System.out.println()的用法和意思
  10. Where is main() method in Android?

LibGDX - Splash & Menu Screen

  1. LibGDX: World, Texture, Background, Camera, Viewport, Screen & OpenGL
  2. LibGDX: Texture, TextureRegion, SpriteBatch & Sprite
  3. UML(Unified Modeling Language): Class Diagram
  4. Type Casting, Upcasting & Downcasting
  5. @Override的用法和意思
  6. LibGDX: Scene2d & Graphical User Interface(GUI)
  7. LibGDX: Splash Screen
  8. LibGDX: Texture Packer
  9. LibGDX: BitmapFonts, JSON & Skin
  10. Android: R.java File
  11. Android: onClick事件的5種實現方式
  12. LibGDX: Game Menu Screen
  13. LibGDX: Advanced Game Menu Screen (using Abstract Screen)
  14. LibGDX: Disposable Interface
  15. Java & LibGDX: super keyword
  16. LibGDX: Advanced Game Menu Screen (using AssetManager)
  17. Java: Array, Arrays, List, ArrayList & LibGDX: Array
  18. LibGDX: File I/O (Preferences)
  19. LibGDX: Game Level Selection Screen
  20. LibGDX: Advanced Game Level Selection Screen (using AssetManager)

LibGDX - Tiled 2D Platform Game

  1. LibGDX: Lifecylce (Render() Method)
  2. LibGDX: Delta Time
  3. LibGDX: Animation & Spritesheet
  4. LibGDX: Keyboard, Mouse & Touch Screen Control
  5. Input Control (Polling VS Event Driven Input)
  6. LibGDX: Tiled (Background and Foreground)
  7. LibGDX: Jumping Action
  8. LibGDX: Tiled (Collision Detection)
  9. LibGDX: Tiled (Bullet Class)
  10. LibGDX: Audio (Sound & Music)
  11. LibGDX: Tiled (Scrollable Background with Camera & HUD)
  12. LibGDX: WorldController & WorldRenderer Class

LibGDX/Java - Card Game No.1 - Blackjack

  1. LibGDX: Install & Setup Android Studio IDE
  2. LibGDX: Use Android Studio to Run Java Hello World
  3. LibGDX: Use Android Studio to Run LibGDX Hello World
  4. Adobe Illustrator: Basic Components Part 1
  5. Adobe Illustrator: Basic Components Part 2
  6. Adobe Illustrator: BlackJack Table & Cards
  7. LibGDX: Blackjack Animation
  8. LibGDX: Interpolation
  9. Java: toString() Method
  10. Java: Blackjack Shuffle Methods
  11. LibGDX: Blackjack Shuffle Method
  12. Java: Blackjack Card Game

LibGDX - Others

  1. Making and Displaying App Icon
  2. LibGDX: Displaying Traditional and Simplified Chinese Characters
  3. LibGDX: Handling Different Screen Resolutions

Unity Game Engine & C#

  1. Visual Studio: C# Hello World
  2. Unity: C# Hello World
  3. Unity: Handling Different Screen Resolutions
  4. Unity: Life Cycle
  5. Unity: StartCoroutine, StopCoroutine, IEnumerator & Yield
  6. Unity: Splash Screen
  7. Unity: Fonts, Traditional and Simplified Chinese Characters
  8. Unity: GameObject, Class Object, new & Instantiate
  9. Unity: Start Screen with Glowing Animated Button
  10. Unity: C# Get & Set Modifier
  11. Unity: Delegates & Events
  12. Unity: File I/O, Read & Write Text File & PlayerPrefs
  13. Unity: Game Level Selection Screen
  14. Unity: Game Menu Screen & ScreenManager
  15. Unity: Encrypt and Decrypt Text File
  16. Unity: Options Menu Screen
  17. Unity: Convert Numbers Image to Custom Font

Unity - Card Game No.1 - Blackjack

  1. Unity: Blackjack Card Game - Part 1 (Full Game)
  2. Unity: Blackjack Card Game - Part 2
  3. Unity: Blackjack Card Game - Part 3
  4. Unity: Blackjack Card Game - Part 4
  5. Unity: Blackjack Card Game - Part 5
  6. Unity: Blackjack Card Game - Part 6
  7. Unity: Blackjack Card Game - Part 7

以下是預告-Coming soon!


Secret Weapon No.1

  1. Unity: Card Game No.2

Advanced Programming

  1. Unity: GPS Programming
  2. Unity: User Login System
  3. Unity: Augmented Reality (AR)

Secret Weapon No.2

  1. Unity: GPS & AR Application

第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 File

Method 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的資料加密,如下圖:

 Unity: Encrypt and Decrypt Text File
  1. 用Notepad建立一個人簡單Text File,用C#程式把Text File的資料加密。

 Unity: Encrypt and Decrypt Text File
  1. 選擇Main Camera。

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

 Unity: Encrypt and Decrypt Text File
  1. 建立一個Assets/Resources的Directory。

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

 Unity: Encrypt and Decrypt Text File
  1. 建立三個Text File路徑:

    i) 資料檔案路徑 - sourceFile - myfile1.txt

    ii) 加密檔案路徑 - encryptedFile - myfile2.txt

    iii) 解密檔案來源 - decryptedFile - myfile3.txt

  2. 建立一個加密方法 - EncryptFile()。

  3. 建立一個解密方法 - DecryptFile()。

  4. 執行加密方法 - EncryptFile()。

    注意: 這裡不會詳細介紹 EncryptFile()和DecryptFile()方法的內容,大家只要懂得如何用就足夠,如果大家對Encryption和Decryption有興趣,可以自行學習。

 Unity: Encrypt and Decrypt Text File
  1. 執行程式,加密了的myfile2就會產生。

1.2) Decrypt Text File then Delete Decrypted Text File

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

 Unity: Encrypt and Decrypt Text File
  1. 把剛剛加密了的myfile2 解密,儲存在一個臨時產生的Text File - myfile3內。

  2. 讀取臨時產生的解密檔案 - myfile3。

  3. 當程式完成讀取後,臨時產生的Text File - myfile3就會被刪除。

 Unity: Encrypt and Decrypt Text File
  1. 建立一個C# Script - MyScript2,再把MyScript2拖放到Main Camera內。

 Unity: Encrypt and Decrypt Text File
  1. 建立三個人Text File路徑:

    i) 資料檔案路徑 - sourceFile - myfile1.txt

    ii) 加密檔案路徑 - encryptedFile - myfile2.txt

    iii) 解密檔案來源 - decryptedFile - myfile3.txt

  2. 建立一個加密方法 - EncryptFile()。

  3. 建立一個解密方法 - DecryptFile()。

  4. 執行加密方法 - DecryptFile()。

    注意: 這裡不會詳細介紹 EncryptFile()和DecryptFile()方法的內容,大家只要懂得如何用就足夠,如果大家對Encryption和Decryption有興趣,可以自行學習。

  5. 當程式完成讀取後,用File.Delete()方法把解密檔案 - myfile3.txt刪除。

 Unity: Encrypt and Decrypt Text File
  1. 執行程式,當程式完成讀取後,用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的資料加密,如下圖:

 Unity: Encrypt and Decrypt Text File
  1. 用Notepad建立一個人簡單Text File,用C#程式把Text File的資料加密。

 Unity: Encrypt and Decrypt Text File
  1. 建立一個C# Script - MyScript3,再把MyScript3拖放到Main Camera內。

 Unity: Encrypt and Decrypt Text File
  1. 建立二個Text File路徑:

    i) 資料檔案路徑 - sourceFile - myfile1.txt

    ii) 加密檔案路徑 - encryptedFile - myfile4.txt

  2. 建立一個加密方法 - EncryptBinaryFile()。

  3. 建立一個只讀取解密資料的方法 - LoadEncryptedTextFile()。

  4. 執行加密方法 - EncryptBinaryFile()。

    注意: 這裡不會詳細介紹 EncryptFile()和DecryptFile()方法的內容,大家只要懂得如何用就足夠,如果大家對Encryption和Decryption有興趣,可以自行學習。

 Unity: Encrypt and Decrypt Text File
  1. 執行程式,加密了的myfile4就會產生。

2.2) Decrypt Text File in Script without Physical Creating Decrypted Text File

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

 Unity: Encrypt and Decrypt Text File
  1. 把剛剛加密了的myfile4用LoadEncryptedTextFile()方法只讀取解密資料,完全沒有產生一個臨時的解密檔案。

 Unity: Encrypt and Decrypt Text File
  1. 建立一個C# Script - MyScript4,再把MyScript4拖放到Main Camera內。

 Unity: Encrypt and Decrypt Text File
  1. 建立二個Text File路徑:

    i) 資料檔案路徑 - sourceFile - myfile1.txt

    ii) 加密檔案路徑 - encryptedFile - myfile4.txt

  2. 建立一個加密方法 - EncryptBinaryFile()。

  3. 建立一個只讀取解密資料的方法 - LoadEncryptedTextFile()。

  4. 執行LoadEncryptedTextFile()方法 。

    注意: 這裡不會詳細介紹 EncryptFile()和decryptFile()方法的內容,大家只要懂得如何用就足夠,如果大家對Encryption和Decryption有興趣,可以自行學習。

 Unity: Encrypt and Decrypt Text File
  1. 執行程式,只讀取解密資料。

Download above code and sample pictures here!