加密原理:Access数据库的有效密码为13位,在不加密时,数据库的第67至9位为一固定的字符串,每位的ASCII码值分别为86,FBEC 37 , 5D, 44 ,9C,FA,C6,5E, 28 ,E6, 13 。加密时,分别用密码的每一位与67至79位的字符的ASCII码值进行异或运算,得到的一个新字符串,将它写回67至79位。 解密方法:将67至79位的字符的ASCII码值分别与 " 86,FB,EC,37,5D,44,9C,FA,C6,5E,28,E6,13 " 进行异或运算,即可得到密码。 加密原理:Access数据库的有效密码为13位,在不加密时,数据库的第67至9位为一固定的字符串,每位的ASCII码值分别为86,FBEC 37 , 5D, 44 ,9C,FA,C6,5E, 28 ,E6, 13 。加密时,分别用密码的每一位与67至79位的字符的ASCII码值进行异或运算,得到的一个新字符串,将它写回67至79位。 解密方法:将67至79位的字符的ASCII码值分别与 " 86,FB,EC,37,5D,44,9C,FA,C6,5E,28,E6,13 " 进行异或运算,即可得到密码。 最近玩VC,就顺便写了下代码,除了access97找不到测试工具,其他均测试正常,直接贴代码吧,我不喜欢过多的描述 // CrackAccessPassDlg.cpp : 实现文件 // #include " stdafx.h " #include " CrackAccessPass.h " #include " CrackAccessPassDlg.h " #ifdef _DEBUG #define new DEBUG_NEW #endif // 用于应用程序“关于”菜单项的 CAboutDlg 对话框 class CAboutDlg : public CDialog ... { public: CAboutDlg();// 对话框数据 enum ...{ IDD = IDD_ABOUTBOX }; protected: virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 支持// 实现protected: DECLARE_MESSAGE_MAP()} ;CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD) ... { } void CAboutDlg::DoDataExchange(CDataExchange * pDX) ... { CDialog::DoDataExchange(pDX);} BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)END_MESSAGE_MAP() // CCrackAccessPassDlg 对话框 CCrackAccessPassDlg::CCrackAccessPassDlg(CWnd * pParent /**/ /*=NULL*/ ) : CDialog(CCrackAccessPassDlg::IDD, pParent) , m_filePath(_T( "" )) ... { m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);} void CCrackAccessPassDlg::DoDataExchange(CDataExchange * pDX) ... { CDialog::DoDataExchange(pDX); DDX_Text(pDX, IDC_EDIT1, m_filePath);} BEGIN_MESSAGE_MAP(CCrackAccessPassDlg, CDialog) ON_WM_SYSCOMMAND() ON_WM_PAINT() ON_WM_QUERYDRAGICON() // }}AFX_MSG_MAP ON_BN_CLICKED(IDC_BUTTON1, & CCrackAccessPassDlg::OnBnClickedButton1)END_MESSAGE_MAP() // CCrackAccessPassDlg 消息处理程序 BOOL CCrackAccessPassDlg::OnInitDialog() ... { CDialog::OnInitDialog(); // 将“关于...”菜单项添加到系统菜单中。 // IDM_ABOUTBOX 必须在系统命令范围内。 ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX); ASSERT(IDM_ABOUTBOX < 0xF000); CMenu* pSysMenu = GetSystemMenu(FALSE); if (pSysMenu !=