Хеширование вектора, например, строк для получения одного за другим вектора хэшей sha256 (Python)

#python #vector #hash #sha256

#python #вектор #хэш #sha256

Вопрос:

Я задавался вопросом, существует ли функция Python f, которая одновременно вычисляет отдельный номер sha256 вектора. Например, если у вас есть вектор A=[a b], функция f дает f(A) = [sha256(a) sha256 (b)] (a иb — строки или числа).

Я не могу заставить его работать с hashlib. Кроме того, пакет ‘openssl’ из R имеет такую функцию ‘sha256’. Существует ли эквивалентность?

Я использую Spyder IDE.

Спасибо.

Ответ №1:

 A = [a,b]
Asha = list(map(sha256, A))
 

или

 def sha256List(arr):
   return list(map(sha256, arr))

Asha = sha256List(A)
 

Редактировать

Если вам нужен список со hexdigest значениями, вы можете использовать

 def sha256HexDigestList(arr):
   return list(map(lambda x: sha256(x).hexdigest(), arr))

Asha_digest = sha256HexDigestList(A)
 

Комментарии:

1. Фантастика! Большое вам спасибо! Можете ли вы также получить способ распечатать полный список хэшей? Команда «print(Asha [1].hexdigest())» выводит число в координате 1, но есть ли более систематический способ распечатать все хэши?

2. @user27636 смотрите редактирование, вы можете использовать список строк дайджеста любым удобным для вас способом, возможно, использовать ' '.join(sha256HexDigestList(A))

3. Да, это работает очень хорошо, спасибо вам большое, большое! Просто обратите внимание, что для ввода необходим массив строк (если 1 строка, то массив из 1 элемента).

4. Здравствуйте, после некоторых исследований это не похоже на правильную «векторизацию», поскольку время, затрачиваемое на вычисление хэшей, в целом равно времени, затрачиваемому на вычисление по одному (с использованием цикла).

5. @user27636 где в вопросе слово векторизация, а Python является однопоточным из-за GIL