我試圖使用sqlcipher創建數據庫,然後通過使用密碼密鑰的十六進制值來訪問它。 根據github(https://github.com/sjlombardo/sqlcipher)的描述,sha256算法對密鑰進行哈希處理,然後用於密文數據庫。可以通過PRAGMA指令以普通和十六進制形式提供密鑰。如果我使用普通版本,它可以正常工作,但我無法使用十六進制鍵值訪問數據庫。 例如在我的情況下,鍵是'演示',當我使用PRAGMA key='demo'
所有的作品。 我得到了sha256:sqlcipher:無法訪問提供十六進制密鑰的數據庫
echo -n demo | shasum -a256 2a97516c354b68848cdbd8f54a226a0a55b21ed138e207ad6c5cbb9c00aa5aea
,然後根據sqlite3_exec調用指令提供給編譯指令:
sqlite3_exec(db, "PRAGMA key = x'2a97516c354b68848cdbd8f54a226a0a55b21ed138e207ad6c5cbb9c00aa5aea'", NULL, NULL, NULL);
但這不起作用。
我應該向PRAGMA指令提供的密鑰的十六進制值是什麼?
非常感謝! – user478681 2011-03-25 16:39:52
那麼呃...當密鑰包含不可打印的字符時,如何從PRAGMA界面設置密鑰?如果我在引號之間強制奇怪的二進制值字符,即使我確保將單引號加倍,似乎也無法工作。 – Michael 2017-02-05 05:08:31
此外,如果我嘗試相反的方式,調用sqlite3_key,然後發佈'PRAGMA kbd_iter = 0'它似乎不具有相同的效果,如果使用'PRAGMA key =「x'...'」' – Michael 2017-02-05 05:09:51