Myfe - 02/04/22


この数日間、私はこのプロジェクトを辞めたい気がしました.
しかし、私はこれを続けることに決めたので、私は再びここにいます.
最初は、ファイルを作ることにしましたcryptography.py と暗号化のためのクイズで使用することができますので、そこにいくつかの暗号化と復号化機能を追加します.
それから、暗号化と復号化の方法について考えました.
  • ヘックス
  • ベース64
  • シーザー暗号
  • SHA 256
  • MD 5
  • バイナリ
  • 私は、私が16進数のASCII、ASCII 16進数、base 64 ASCII、ASCIIベース64、caeser暗号化ASCII、ASCII caeser暗号、ASCII - SHA 256、ASCII - MD 5、バイナリASCIIとASCIIバイナリをすることができたとわかりました.
    そこで私はグーグルを関数で検索しました.
    import base64
    import hashlib
    import string
    
    alphabet = string.ascii_lowercase
    
    def hextoascii(text):
      return bytes.fromhex(text).decode('utf-8')
    
    def asciitohex(text):
      return text.encode('utf-8').hex()
    
    def base64toascii(text):
      base64_bytes = text.encode('ascii')
      message_bytes = base64.b64decode(base64_bytes)
      message = message_bytes.decode('ascii')
      return message
    
    def asciitobase64(text):
      message_bytes = text.encode('ascii')
      base64_bytes = base64.b64encode(message_bytes)
      base64_message = base64_bytes.decode('ascii')
      return base64_message
    
    def asciitocaesercipher(text,s):
      result = ""
      for i in range(len(text)):
        char = text[i]
        if (char.isupper()):
           result += chr((ord(char) + s-65) % 26 + 65)
        else:
           result += chr((ord(char) + s - 97) % 26 + 97)
      return result
    
    def caeserciphertoascii(encrypted_message, key):
      decrypted_message = ""
      for c in encrypted_message:
        if c in alphabet:
          position = alphabet.find(c)
          new_position = (position - key) % 26
          new_character = alphabet[new_position]
          decrypted_message += new_character
        else:
          decrypted_message += c
      return decrypted_message
    
    def asciitosha256(hash_string):
      hashed_string = hashlib.sha256(hash_string.encode('utf-8')).hexdigest()
      return hashed_string
    
    def asciitomd5(text):
      result = hashlib.md5(text.encode())
      return result
    
    def asciitobinary(text):
      thelist = [bin(ord(x))[2:].zfill(8) for x in text]
      binary = " ".join(thelist)
      return binary
    
    def binarytoascii(binary):
      binary = binary.split()
      return ''.join([chr(int(x, 2)) for x in binary])
    
    次に、私はlists.py そして私は辞書を加えましたdegreescosts そして、30度である程度を始めるコストを加えました
    degreescosts = {'cryptography': 30}
    
    その後、私は行きましたfunctions.py 関数と呼ばれるaddmoney , すぐに必要だと思ったからです.
    def addmoney(username, amount):
      user = getuser(username)
      money = user['Money']
      money = money + amount
      del user['Money']
      user['Money'] = money
      profilescol.delete_one({"Username": username})
      profilescol.insert_many([user])
      return user
    
    前のコードに追加すると、別の関数adddegree , あなたの学位取得プロセスを始めることができます.
    def adddegree(username, jobname):
      jobname = jobname.lower()
      if len(getpreparingdegrees(username)) == 3:
        return "You can't prepare for more than 3 degrees."
      if jobname not in degrees:
        return "This is not a real degree!"
      user = getuser(username)
      if degreescosts[jobname] > user['Money']:
        return f"You don't have enough money to start preparing for {jobname}"
      addmoney(username, -1*degreescosts[jobname])
      degree = [{
        "Username": username,
        "Type": jobname,
        "Status": 0
      }]
      degreescol.insert_many(degree)
    
    これは今日のですが、次のブログでは、学位を開始するフロントエンドをカバーするよ!
    ここで私について来てくださいGitHub , アンドスターrepository
    読書ありがとう!