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 |
} |
} |
程式語言 C, C++, C#, Java, JavaScript, Objective-C, Perl, PHP, Python, Ruby, Swift
與網頁標記語言 HTML, CSS 的教學部落格
Swift 入門指南 V1.00 - Encrypt.swift
訂閱:
張貼留言 (Atom)
沒有留言:
張貼留言