1. Заменить все
print что-то
print( что-то )
2. Заменить все
"стринг с %, {, }" % какие-то данные
"стринг с %, {, }".format( какие-то данные )
Всё правильно? Ничего не напутал? Что-нибудь пропустил?
Ответ: Простые случаи вроде print ловит скрипт 2to3, поставляемый с Питоном. Ещё нужно проверить все возвращаемые типы (в первую очередь, bytes вместо string), для чего покрыть весь код тестами.
На всякий случай вот эти скрипты, чтобы опять не искать:
#/usr/bin/python3
import base64
import hashlib
import sys
password, salt = sys.argv[1:3]
hashstr = hashlib.sha1( (password + salt).encode('ascii') ).hexdigest()
res = '{SSHA}' + base64.b64encode( (hashstr + salt).encode('ascii') ).decode('ascii')
print( res )
'''
--------------------------------------------------------------------------------------
'''
#/usr/bin/python3
import base64
import hashlib
import sys
inputt, password = sys.argv[1:3]
if inputt[:6] == '{SSHA}':
inputt = inputt[6:]
else:
print('WARNING: Cannot find "{SSHA}" marker at the start! Assuming none present.')
input_hash_salt = base64.b64decode( inputt.encode('ascii') ).decode('ascii')
input_hash, salt = input_hash_salt[:40], input_hash_salt[40:]
calc_hash = hashlib.sha1( ( password + salt ).encode('ascii') ).hexdigest()
print( 'Input and calculated hashes match: ', input_hash == calc_hash )