D
При полной работоспобности, готов оплатить выполненую работы
Omen
Итерируй keyvalues
Gennady
Есть скрипт на сайте, который ипользует библиотеку CryptoJS. Хотелось бы эмулировать генерацию ключей на python.
j = CryptoJS.AES.encrypt(JSON.stringify(LIVESTREET_SECURITY_KEY), "SECRETKEY", {
format: g
}).toString();
Нашел в доках библы пример работы с ней. И возможно даже рабочий скрипт на php.
function cryptoJsAesEncrypt($passphrase, $value){
$salt = openssl_random_pseudo_bytes(8);
$salted = '';
$dx = '';
while (strlen($salted) < 48) {
$dx = md5($dx.$passphrase.$salt, true);
$salted .= $dx;
}
$key = substr($salted, 0, 32);
$iv = substr($salted, 32,16);
$encrypted_data = openssl_encrypt(json_encode($value), 'aes-256-cbc', $key, true, $iv);
$data = array("ct" => base64_encode($encrypted_data), "iv" => bin2hex($iv), "s" => bin2hex($salt));
return json_encode($data);
}
Переписал это в
from secrets import token_hex
from hashlib import md5
from base64 import b64encode
from Crypto.Cipher import AES
def crypt(passphrase, value):
salt = token_hex(8)
salted = ''
dx = ''
while len(salted) < 48:
target = dx + passphrase + salt
dx = md5(target.encode('utf-8')).hexdigest()
salted += dx
key = salted[:32]
iv = salted[32:-16]
cipher = AES.new(key.encode('utf-8'), AES.MODE_CBC, iv.encode('utf-8'))
return {
'ct': b64encode(cipher.encrypt(value.encode('utf-8'))).decode('utf-8'),
'iv': iv,
's': salt
}
Вот пример результата работы скрипта на сайте:
{"ct":"9V0m2MQYyVmvX0KFysUiabJXybX5YvlrcExJivn97RVmWGfCzBvXtTZBHzRYzmxZ","iv":"f0501cb3e1821662174ef4a27668ea5f","s":"f4ba47651002ed41"}
Вот пример результата скрипта на Python
{'ct': 'YdyKzxQg7C91l1xx+G+aQ4DA0N5mmVb+FH0M+LEwlis=', 'iv': '05a4c3d560f16a36', 's': 'e05d97054995a41e'}
Выходит что длины разные
Gennady
Там AES. Что-бы поправить? Мож кто в JSах шарит?
Nikolay
🌚
Omen
это метод, возвращает кортеж key value
Omen
я тебя обманул. {}.items()
Nikolay
У меня кончились слова.
17
🙁
Aragaer
>>> d = {'a': 1, 'b': 2}
>>> D = {v: k for k, v in d.items()}
>>> D
{1: 'a', 2: 'b'}
Nikolay
Aragaer
тогда кровь-кишки
Aragaer
один из них перетрет остальные
Aragaer
>>> d = {'a': 1, 'b': 2, 'c': 1}
>>> D = {v: k for k, v in d.items()}
>>> D
{1: 'c', 2: 'b'}
Tigran
я слышал, там их много
Aragaer
>>> next(k for k,v in d.items() if v==1)
'a'
Aragaer
вот норм вариант. Но надо StopIteration ловить руками
Tigran
Omen
filter(lambda k,v: v==1, d.items())
Арсений!
Друзья, можете написать пример изменения текста телеграм ботом после нажатия на callback кнопку? Буквально пару строчек
Nikolay
Я не умею создавать ботов, так что не помогу
Omen
Ща
Omen
Может помогу
Omen
Тебе что именно
Omen
Могу исходник с примером кинуть
Omen
Я там на твистеде пилил надстройку какую то
Арсений!
Тебе что именно
Просто изменение изначального текста после нажатия на кнопку. В любом возможном виде
Omen
Ща
Omen
https://pastebin.com/fnexEuJP
Omen
Там внизу пример запилен
Omen
Тип цепляешь калбэк команду к кнопке
Omen
Тык на неё, возращается слбытие калбэк и название кнопки.
Omen
Падаешь в едит меседж по айди мессаги, что вернулась
Арсений!
Ок, спасибо
Omen
Не за что
Omen
Бля чот не верю, что это я писал код
Omen
Говнокод какой-то
Арсений!
Let’s
Andrew
Спасибо
Апач
можно ли определять свои бинарные лево и правоассоциативные операторы?
Апач
по типу +, *
🍁 Jaŭhien
Нельзя
Апач
эх бяда. А ведь удобная же фича
🍁 Jaŭhien
Можно переопределять существующие
Апач
для dsl в особенности
Апач
Не, не годняк.
🍁 Jaŭhien
За дсл можно сходить в хаскель или окамл
Omen
можно для coding модуля запилить кастом реализацию
Omen
#coding:dsl_ass
Omen
и всё
Omen
https://github.com/marrow/cinje
Апач
Как то ну уж очень притрушенно реализовано
Omen
Tishka17
Апач
Но радует что такая возможность всё же есть
Сергей
а что если нуноу эти не эыт
Сергей
шас
Апач
например
Апач
да и просто дофига удобно
Апач
меньше сокобок
🍁 Jaŭhien
domain specific language
Kop
Генераторы часто используют вообще ?
Tishka17
Tishka17
Где-то раз в пару дней
Tishka17
Если считать только те дни, когда пишу код
Kop
Кусок функцию
Tishka17
Щас гляну, есть че на гитхабе
Kop
Generator example 😂👌🏻
Tishka17
Чёт даже и показать нечего