Tôi đã xây dựng một vài dll từ nguồn. Chúng chủ yếu từ cùng một nguồn, sqlite-3.6.22, Open SSL 0.9.8 và sqlcipher.Mã hóa SQLite khác nhau giữa các nền tảng
Lý do tôi xây dựng hai là tôi cần một để làm việc với dự án C++ và một là trình điều khiển JDBC cho java (do đó, một java jni dll).
Bây giờ tôi có hai DLL, tôi có thể viết và tạo cơ sở dữ liệu trong C++ và C# (sử dụng C), và giống nhau trong java. Cả hai đáp ứng như tôi mong đợi, bạn có thể mở chúng nếu bạn cung cấp cho đúng mật khẩu, nó không thành công nếu bạn đưa ra một mật khẩu sai, vv Cả hai lý thuyết nên là mặc định cho sqlcipher, được mã hóa cứng để aes-256- cbc. Tuy nhiên, tôi không thể mở một cơ sở dữ liệu được tạo bằng một với cơ sở dữ liệu khác. Tôi có thể mở một cơ sở dữ liệu được tạo bằng phiên bản c trong SQLite3 Management studio, nhưng chỉ khi tôi đặt mật khẩu với RSA được chọn, tôi không thể mở một mật khẩu được tạo bằng java trong bất kỳ thứ gì khác mà tôi có.
Điều khác là nếu tôi tạo hai cơ sở dữ liệu với nội dung giống hệt nhau với cơ sở dữ liệu c, chúng là byte cho byte giống hệt nhau, trong khi các byte java thì không.
Tôi chắc chắn tôi đang làm điều gì đó rõ ràng sai, nhưng tôi thực sự không thể nhìn thấy nó - theo như tôi có thể thấy java đang làm việc tốt (dễ dàng hơn để gỡ lỗi vì lý do nào đó).
Xin lỗi cho lỗi đánh máy khủng khiếp 'khác biệt'! – Woody
Không chắc liệu câu hỏi của tôi có liên quan hay không. Bạn có thể tạo hai cơ sở dữ liệu không được mã hóa với Java là byte-cho-byte giống hệt nhau không? –
Tôi đã sửa lỗi đánh máy tiêu đề của bạn! – CraigTP