Форум сайта python.su
Всем доброго Времени суток. Собственно трабл… записать текст шифрованный алгоритмом AES в базу. Вот кусочек кода шифрования и записи
obj_aes = AES.new(h.hexdigest(), AES.MODE_CBC)
for i in range(0, len(tmp)):
if len( tmp[i][0].decode('cp1251') ) % 16 <> 0:
while len(tmp[i][0].decode('cp1251')) % 16 <> 0:
tmp[i][0] += ' '
c.execute("insert into termin values (" + str(i) + ",'" + obj_aes.encrypt(tmp[i][0] ) + "'," + str( stack.index( tmp[i][2].decode('cp1251') ) ) + ")")
Офлайн
Какие-то управляющие символы появились в результате шифрования, я думаю, которые не может база переварить.
Офлайн
хм…. а как бы Вы поступили в такой ситуации?
Офлайн
Попробовал, для начала, передавать параметры через (?,?,?), а не использовал прямую конкатенацию.
Ну и, как вариант, попробовал отдебажить этот кусок - printo'м или с помощью pdb - узнать что там на самом деле получается, в результирующем запросе.
Офлайн
спс :) поработаю
Офлайн
Поработал в общем… код принял вид
obj_aes = AES.new(h.hexdigest(), AES.MODE_CBC)
for i in range(0, len(tmp)):
if len( tmp[i][0].decode('cp1251') ) % 16 <> 0:
while len(tmp[i][0].decode('cp1251')) % 16 <> 0:
tmp[i][0] += ' '
#c.execute("insert into termin values (" + str(i) + ",'" + obj_aes.encrypt(tmp[i][0] ) + "'," + str( stack.index( tmp[i][2].decode('cp1251') ) ) + ")")
c.execute("insert into termin values(?, ?, ?)", [str(i), obj_aes.encrypt(tmp[i][0] ), str( stack.index( tmp[i][2].decode('cp1251') ) ) ] )
c.execute("select * from termin")
Офлайн
спс ) разобрался. тему можно закрывать
Офлайн
kzoi_pyтак скажи как, для тех кто столкнется с этой же проблемой…
спс ) разобрался. тему можно закрывать
Офлайн