Encryption and decryption can be managed using key and rekey PRAGMA statements. By default, the library uses the sqleet cipher.
To encrypt a database (using the default cipher):
Use rekey to set a new key.
To read an encrypted database (using the default cipher):
Use key to provide the existing key before performing queries.
To read a legacy SQLCipher database (e.g., created by DB Browser for SQLite):
You must explicitly set the cipher to sqlcipher and set legacy=4 before providing the key.
// Encrypting with default cipher (sqleet)
const db = require('better-sqlite3-multiple-ciphers')('foobar.db', options);
db.pragma(`rekey='secret-key'`);
db.close();
// Reading with default cipher
const db = require('better-sqlite3-multiple-ciphers')('foobar.db', options);
db.pragma(`key='secret-key'`);
const row = db.prepare('SELECT * FROM users WHERE id = ?').get(userId);
// Reading legacy SQLCipher databases
const db = require('better-sqlite3-multiple-ciphers')('foobar.db', options);
db.pragma(`cipher='sqlcipher'`);
db.pragma(`legacy=4`);
db.pragma(`key='secret-key'`);
const row = db.prepare('SELECT * FROM users WHERE id = ?').get(userId);