Swift 入門指南 V1.00 - Encrypt.swift
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 |
| } |
| } |
訂閱:
張貼留言 (Atom)
window.___gcfg = { 'lang': 'zh-TW' };
沒有留言:
張貼留言