001 | from random import shuffle |
002 | |
003 | # 定義 Encrypt 類別 |
004 | class Encrypt: |
005 | # 建立 Encrypt 物件同時建立密碼表 |
006 | def __init__(self, str=None): |
007 | # 設定 code |
008 | if str == None: |
009 | self.code = [chr(i) for i in |
010 | range(97, 123)] |
011 | shuffle(self.code) |
012 | else: |
013 | self.code = list(str) |
014 | |
015 | # 設定 alph |
016 | self.alph = [chr(i) for i in |
017 | range(97, 123)] |
018 | |
019 | # 回傳密碼表字串 |
020 | def __str__(self): |
021 | code = "".join(self.code) |
022 | return "code: " + code |
023 | |
024 | # 編碼的方法 |
025 | def toEncode(self, str): |
026 | # 暫存編碼結果的字串 |
027 | result = "" |
028 | |
029 | # 利用迴圈走完參數字串的所有字元 |
030 | for i in str: |
031 | # 判斷該字元是否為英文小寫字母 |
032 | # 若是英文小寫字母就進行編碼轉換 |
033 | if i in self.code: |
034 | j = self.alph.index(i) |
035 | result += self.code[j] |
036 | else: |
037 | result += i |
038 | |
039 | # 結束回傳編碼過的字串 |
040 | return result |
041 | |
042 | # 解碼的方法 |
043 | def toDecode(self, str): |
044 | # 暫存解碼結果的字串 |
045 | result = "" |
046 | |
047 | # 利用迴圈走完參數字串的所有字元 |
048 | for i in str: |
049 | # 判斷該字元是否為英文小寫字母 |
050 | # 若是英文小寫字母就進行解碼轉換 |
051 | if i in self.code: |
052 | j = self.code.index(i) |
053 | result += self.alph[j] |
054 | else: |
055 | result += i |
056 | |
057 | # 結束回傳解碼過的字串 |
058 | return result |
059 | |
060 | # 測試部分 |
061 | if __name__ == '__main__': |
062 | e = Encrypt() |
063 | print() |
064 | print(e) |
065 | s1 = "There is no spoon." |
066 | print("Input : " + s1) |
067 | s2 = e.toEncode(s1) |
068 | print("Encode: " + s2) |
069 | s3 = e.toDecode(s2) |
070 | print("Decode: " + s3) |
071 | print() |
072 | |
073 | # 檔名: encrypt.py |
074 | # 作者: Kaiching Chang |
075 | # 時間: July, 2014 |
the end
沒有留言:
張貼留言