⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 secure.h

📁 采用c++实现的文件加密程序
💻 H
字号:
	
// Secure.h : Declaration of the CSecure

#ifndef __SECURE_H_
#define __SECURE_H_

#include "resource.h"       // main symbols
#include "rc4.h"

/////////////////////////////////////////////////////////////////////////////
// CSecure
class ATL_NO_VTABLE CSecure : 
	public CComObjectRootEx<CComMultiThreadModel>,
	public CComCoClass<CSecure, &CLSID_Secure>,
	public ISupportErrorInfo,
	public IDispatchImpl<ISecure, &IID_ISecure, &LIBID_SECURESTORAGELib>
{
public:
	CSecure()
	{
		m_pUnkMarshaler = NULL;
		m_Registry.Create(HKEY_LOCAL_MACHINE, "SOFTWARE\\SecureStorage");
	}
	virtual ~CSecure()
	{
		m_Registry.Close();
	}

DECLARE_REGISTRY_RESOURCEID(IDR_SECURE)
DECLARE_NOT_AGGREGATABLE(CSecure)
DECLARE_GET_CONTROLLING_UNKNOWN()

DECLARE_PROTECT_FINAL_CONSTRUCT()

BEGIN_COM_MAP(CSecure)
	COM_INTERFACE_ENTRY(ISecure)
	COM_INTERFACE_ENTRY(IDispatch)
	COM_INTERFACE_ENTRY(ISupportErrorInfo)
	COM_INTERFACE_ENTRY_AGGREGATE(IID_IMarshal, m_pUnkMarshaler.p)
END_COM_MAP()

	HRESULT FinalConstruct()
	{
		return CoCreateFreeThreadedMarshaler(
			GetControllingUnknown(), &m_pUnkMarshaler.p);
	}

	void FinalRelease()
	{
		m_pUnkMarshaler.Release();
	}

	CComPtr<IUnknown> m_pUnkMarshaler;

// ISupportsErrorInfo
	STDMETHOD(InterfaceSupportsErrorInfo)(REFIID riid);

// ISecure
public:
	STDMETHOD(DecryptFromRegistry)(/*[in]*/ BSTR key, /*[in]*/ BSTR name, /*[out, retval]*/ BSTR * value);
	STDMETHOD(EncryptToRegistry)(/*[in]*/ BSTR key, /*[in]*/ BSTR name, /*[in]*/ BSTR value);
	STDMETHOD(get_RegistryKey)(/*[out, retval]*/ BSTR *pVal);
	STDMETHOD(put_RegistryKey)(/*[in]*/ BSTR newVal);
	STDMETHOD(Decrypt)(/*[in]*/ BSTR key, /*[in]*/ BSTR cipher, /*[out,retval]*/ BSTR * clearText);
	STDMETHOD(Encrypt)(/*[in]*/ BSTR key, /*[in]*/ BSTR value, /*[out,retval]*/ BSTR * cipher);
private:
	bstr_t m_registryPath;
	CRegKey m_Registry;
};

#endif //__SECURE_H_

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -