Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
Хранить такую информацию в открытом виде паранойя не позволяет, использовать сторонние сервисы тоже, поэтому после некоторых поисков остановился на стандарте AES.Могу порекомендовать вот это или аналог — отличная штука для таких дел.
Сразу захотелось разобраться и реализовать алгоритм самому, не прибегая к дополнительным модулям.Надеюсь, это только в образовательных целях? Обычно самодельные реализации криптоалгоритмов для практического применения не очень рекомендуется :)
В общем, пакуем все это дело наглухо в пластик, остекловываем и закапываем на глубине 20метров© DiHalt
def mul_by_02(num):
if num < 0x80:
res = (num << 1)
else:
res = (num << 1)^0x1b
return res % 0x100
def mul_by_03(num):
return mul_by_02(num)^num
def mul_by_09(num):
#return mul_by_03(num)^mul_by_03(num)^mul_by_03(num) - works wrong, I don't know why
return mul_by_02(mul_by_02(mul_by_02(num)))^num
def mul_by_0b(num):
#return mul_by_09(num)^mul_by_02(num)
return mul_by_02(mul_by_02(mul_by_02(num)))^mul_by_02(num)^num
def mul_by_0d(num):
#return mul_by_0b(num)^mul_by_02(num)
return mul_by_02(mul_by_02(mul_by_02(num)))^mul_by_02(mul_by_02(num))^num
def mul_by_0e(num):
#return mul_by_0d(num)^num
return mul_by_02(mul_by_02(mul_by_02(num)))^mul_by_02(mul_by_02(num))^mul_by_02(num)
def mul2(num):
return ((num<<1)^(num>>7))
AES-128. Детали и реализация на python