Swift 入門指南 V1.00 - Encrypt.swift




import Cocoa
 
class Encrypt {
   // 英文小寫字母表
   let alphabet = "abcdefghijklmnopqrstwuvxyz"
   // 密碼表整數陣列
   var code = Array(arrayLiteral: 26)
 
   // 建構子
   init() {
      setCode()
   }
 
   // 設定密碼表
   func setCode() {
      var a = 0
      var b = 0
      // a 必須是奇數
      while a % 2 == 0 {
         a = Int(arc4random() % 10)
         b = Int(arc4random() % 10)
      }
 
      var c = 97
      var i, x, y, m: Int
      // 以迴圈取得每一個餘數
      for i = 0; i < 26; i++ {
         x = c
         y = x * a + b
         m = y % 26
         code.append(m)
         c++
      }
 
      // 移除第一個預設值
      code.removeAtIndex(0)
   }
 
   // 由字元從字母表中找到索引值
   func findAlphabetIndex(chr: Character) -> Int {
      var i = 0
      for c in alphabet {
         if chr == c {
            return i
         }
 
         i++
      }
 
      return 0
   }
 
   // 由字元從密碼表中找到索引值
   func findCodeIndex(chr: Character) -> Int {
      var n = findAlphabetIndex(chr)
      var i = 0
      for d in code {
         if d == n {
            return i
         }
 
         i++
      }
 
      return -1
   }
 
   // 判斷是否為英文小寫字母的字元
   func isLowercase(chr: Character) -> Bool {
      for i in alphabet {
         if (chr == i) {
            return true
         }
      }
 
      return false
   }
 
   // 由索引值找到密碼表中對應的字元
   func findCode(number: Int) -> Character {
      let index = code[number]
      var i = 0
      for s in alphabet {
         if i == index {
            return s
         }
 
         i++
      }
 
      return Character("")
   }
 
   // 由索引值找到字母表中對應的字元
   func findLetter(index: Int) -> Character {
      var i = 0
      for s in alphabet {
         if i == index {
            return s
         }
 
         i++
      }
 
      return Character("")
   }
 
   // 進行編碼的方法
   func toEncode(str: String) -> String {
      var newStr = ""
      for chr in str {
         if isLowercase(chr) {
            newStr.append(findCode(findAlphabetIndex(chr)))
         }
         else {
            newStr.append(chr)
         }
      }
      return newStr
   }
 
   // 進行解碼的方法
   func toDecode(str: String) -> String {
      var newStr = ""
      for chr in str {
         if isLowercase(chr) {
            newStr.append(findLetter(findCodeIndex(chr)))
         }
         else {
            newStr.append(chr)
         }
      }
      return newStr
   }
}

沒有留言: