BG Development


  Reply to this topicStart new topicStart Poll

> Криптиране с Crypto
dedal
Публикувано на: 18-12-2019, 17:48
Quote Post



Име: Григор Колев
Група: Потребител
Ранг: Посетител

Мнения: 114
Регистриран на: 17.11.10



Имам два класа за криптиране, единия е писан преди много време.
Та стария работи по следната логика:
Имам голям стринг 256 бита.
От тях взимам Х стойности които събирам в парола
имам и 16 бита вектор.
Логиката е едното устройство криптира с парола и случаен вектор, а другото декриптира с парола и вектора който е генериран от подаващия информацията.
До всички устройства имам достъп само аз и идеята е да ги защитя от подслушване.
Самия софтуер е обътнат от Пътхон към C и е компилиран ( Трудно се чете )

От друга страна имам нов клас който използвам за лицензи.
Той също криптира и декриптира, но използва логиката на RSA public, private ключ.
Или устройство А подава криптиран сигнал, Б декриптира и отговаря с json и сигнатура, А проверява сигнатура и ако е ОК се активира.

Та въпросът ми е да завъртя ли цялото криптиране към новия клас или да си го оставя така с вектор и парола. Чудя се кое е по-сигурно.
Нещо от сорта приличат:

СТАР
CODE

class Crypt():
   def __init__(self, key, iv, iv_jump=False):
       self.key = key
       self.iv = iv
       self.bs = 16
       self.iv_jump = iv_jump

   def encrypt(self, my_message):
       if self.iv_jump == False:
           obj = AES.new(self.key, AES.MODE_CFB, self.iv)
       else:
           raw = self._pad(my_message)
           iv = Random.new().read(AES.block_size)
           cipher = AES.new(self.key, AES.MODE_CBC, iv)
           return base64.urlsafe_b64encode(iv + cipher.encrypt(raw))
       return obj.encrypt(my_message)

   def decrypt(self, my_message):
       if self.iv_jump == False:
           obj2 = AES.new(self.key, AES.MODE_CFB, self.iv)
       else:
           enc = base64.urlsafe_b64decode(my_message.encode('utf-8'))
           iv = enc[:self.bs]
           cipher = AES.new(self.key, AES.MODE_CBC, iv)
           return self._unpad(cipher.decrypt(enc[self.bs:]))
       return obj2.decrypt(my_message)
   
   def _pad(self, s):
       return s + (self.bs - len(s) % self.bs) * chr(self.bs - len(s) % self.bs)
   
   def _unpad(self, s):
       return s[:-ord(s[len(s)-1:])]


Нов
CODE

class RSAKey():
   def __init__(self, hash="SHA-256"):
       self.hash = hash

   def load_key(self, key):
       self.keyPair = RSA.importKey(file(key, 'rb').read())
       self.signer = PKCS115_SigScheme(self.keyPair)

   def encrypt(self, msg):
       return self.keyPair.encrypt(msg, self.signer)[0]

   def decrypt(self, msg):
       msg = self.keyPair.decrypt(msg)
       return msg



Това мнение е било редактирано от dedal на 18-12-2019, 17:55
PMEmail Poster
Top
akrachev
Публикувано на: 18-12-2019, 23:48
Quote Post



Име: акрачев
Група: Потребител
Ранг: Старо куче

Мнения: 797
Регистриран на: 27.11.09



Що не поглeднеш License3J

Това мнение е било редактирано от akrachev на 18-12-2019, 23:48
PMEmail Poster
Top
dedal
Публикувано на: 19-12-2019, 16:33
Quote Post



Име: Григор Колев
Група: Потребител
Ранг: Посетител

Мнения: 114
Регистриран на: 17.11.10



Ййй

Това мнение е било редактирано от dedal на 19-12-2019, 16:37
PMEmail Poster
Top
1 потребители преглеждат тази тема в момента (1 гости, 0 анонимни потребители)
Потребители, преглеждащи темата в момента:

Topic Options Reply to this topicStart new topicStart Poll

 


Copyright © 2003-2019 | BG Development | All Rights Reserved
RSS 2.0