samedi 20 juin 2015

Unable to open pysqlcipher-encrypted dictionary in command-line sqlcipher tool

I am able to create an encrypted database using pysqlcipher, and open it with pysqlcipher, but somehow I cannot open the same database using the sqlcipher command0line tool installed on Mac OS X when installing sqlcipher from source. For installation, I followed the steps listed here: http://ift.tt/1Bu2ix9 and the versions of libsqlcipher should therefore be the same in both cases.

Test script:

from pysqlcipher import dbapi2 as sqlite
conn = sqlite.connect('test.db')
c = conn.cursor()
c.execute("PRAGMA key='test'")
c.execute('''create table stocks (date text, trans text, symbol text, qty real, price real)''')
c.execute("""insert into stocks values ('2006-01-05','BUY','RHAT',100,35.14)""")
conn.commit()
c.close()


conn = sqlite.connect('test.db')
c = conn.cursor()
c.execute("PRAGMA key='test'")
c.execute("SELECT * FROM stocks;")
print(c.fetchall())
c.close()

Output:

$ python ciphertest.py
[(u'2006-01-05', u'BUY', u'RHAT', 100.0, 35.14)]

Now, I attempt to open the test.db file using the sqlcipher command-line tool:

$ sqlcipher test.db
SQLCipher version 3.8.8.3 2015-02-25 13:29:11
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite> PRAGMA key='test';
sqlite> SELECT * FROM stocks;
Error: file is encrypted or is not a database

I'm not sure whether this is an error on my side, or a problem with the pysqlcipher library. I opened an issue to be safe, but any advice would be greatly appreciated!

Aucun commentaire:

Enregistrer un commentaire