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

📄 csptest2dlg.cpp

📁 这个工程主要是非对称的密钥的导出和导入 还有就是会话密钥的操作.
💻 CPP
📖 第 1 页 / 共 2 页
字号:
	// TODO: Add your control notification handler code here
	UpdateData(TRUE);
	if(m_strImSEnDataPath == "")
	{
		MessageBox("请输入待加密数据文件路径!");
		return;
	}
	
	if(m_strImSePath == "")
	{
		MessageBox("请输入会话密钥文件路径!");
		return;
	}
	
	if(m_strContainer == "")
	{
		MessageBox("请输入容器名称!");
		return;
	}
	
	if(m_strImSePriPath == "")
	{
		MessageBox("请输入保护私钥文件路径!");
		return;
	}

	if(m_strExSDeDataPath == "")
	{
		MessageBox("请输入加/解密后文件!");
		return;
	}

	BYTE pbSessionKey[1024] = {0};
	int nSessionLen;
	BYTE pbSourceData[1024] = {0};//由于赶时间测试的数据非常小 偷懒没有用new的空间 
								  //大家还是用new分配空间养成好习惯 记得delete []
	int nSourceLen;
	BYTE pbDestData[1024] = {0};
	int nDestLen;
	BYTE pbPriKey[1024] = {0};
	int nPriLen;
	
	OpenFile(m_strImSePriPath, pbPriKey, nPriLen, "会话解密私钥文件");
	OpenFile(m_strImSePath, pbSessionKey, nSessionLen, "会话密钥数据文件!");
	OpenFile(m_strImSEnDataPath, pbSourceData, nSourceLen, "待加/解密数据文件!");

	CCsp objCsp;
	int r = objCsp.SessionEncrypt(pbSessionKey, nSessionLen, pbSourceData, nSourceLen, pbPriKey,
		nPriLen, pbDestData, (DWORD *)&nDestLen, (BYTE*)m_strContainer.GetBuffer(0));
	if(r != 0)
	{
		MessageBox(objCsp.m_strError);
		return;
	}

	WriteFile(m_strExSDeDataPath, pbDestData, nDestLen, "加密后数据文件!");
	
	MessageBox("会话加密数据成功!");
	
	return;
}

void CCSPTEST2Dlg::OnSessionDecrypt() 
{
	// TODO: Add your control notification handler code here
	UpdateData(TRUE);
	
	if(m_strImSePath == "")
	{
		MessageBox("请输入会话密钥文件路径!");
		return;
	}
	
	if(m_strContainer == "")
	{
		MessageBox("请输入容器名称!");
		return;
	}
	
	if(m_strImSePriPath == "")
	{
		MessageBox("请输入保护私钥文件路径!");
		return;
	}
	
	if(m_strImSEnDataPath == "")
	{
		MessageBox("请输入待解密数据文件路径!");
		return;
	}
	
	if(m_strExSDeDataPath == "")
	{
		MessageBox("请输入解密后文件!");
		return;
	}
	
	BYTE pbSessionKey[1024] = {0};
	int nSessionLen;
	BYTE pbSourceData[1024] = {0};
	int nSourceLen;
	BYTE pbDestData[1024] = {0};
	int nDestLen;
	BYTE pbPriKey[1024] = {0};
	int nPriLen;
	
	OpenFile(m_strImSePriPath, pbPriKey, nPriLen, "会话解密私钥文件");
	OpenFile(m_strImSePath, pbSessionKey, nSessionLen, "会话密钥数据文件!");
	OpenFile(m_strImSEnDataPath, pbSourceData, nSourceLen, "待解密数据文件!");

	CCsp objCsp;
	int r = objCsp.SessionDecrypt(pbSessionKey, nSessionLen, pbSourceData, nSourceLen, pbPriKey,
		nPriLen, pbDestData, (DWORD *)&nDestLen, (BYTE*)m_strContainer.GetBuffer(0));
	if(r != 0)
	{
		MessageBox(objCsp.m_strError);
		return;
	}

	WriteFile(m_strExSDeDataPath, pbDestData, nDestLen, "解密后数据文件!");
	
	MessageBox("会话解密数据成功!");
	
	return;


}

void CCSPTEST2Dlg::OpenFile(CString strFilePath, BYTE *pbFiledata, 
									INT &nFileLen, CString strFileDescript)
{
	UpdateData(TRUE);

	CFile fp;
	if(fp.Open(strFilePath, CFile::modeRead) == 0)
	{
		MessageBox("无法打开!"+strFileDescript);
		return;
	}
	
	int nLenTemp = fp.GetLength();
	fp.Read(pbFiledata, nLenTemp);
	nFileLen = nLenTemp;
	fp.Close();

	return;
}

void CCSPTEST2Dlg::OnBrownExport(CString strExportPath)
{
	UpdateData(TRUE);
	CString strTempExportPath;
	char szFilter[] = "*.txt文件(*.txt)|*.txt|全部文件(*.*)|*.*||";
	CFileDialog OpenFile(FALSE, NULL, "*.*", 
		OFN_HIDEREADONLY|OFN_FILEMUSTEXIST|OFN_NOCHANGEDIR, szFilter, NULL);
	if(OpenFile.DoModal() != IDOK)
	{
		return;
	}

	strTempExportPath = OpenFile.GetPathName();
	m_strExEnPubPath = strTempExportPath;
	UpdateData(FALSE);
	return;

}

void CCSPTEST2Dlg::OnBrownImport(CString strImportPath)
{
	UpdateData(TRUE);
	CString strTempImportPath;
	char szFilter[] = "*.txt文件(*.txt)|*.txt|全部文件(*.*)|*.*||";
	CFileDialog OpenFile(TRUE, NULL, "*.*", 
		OFN_HIDEREADONLY|OFN_FILEMUSTEXIST|OFN_NOCHANGEDIR, szFilter, NULL);
	if(OpenFile.DoModal() != IDOK)
	{
		return;
	}

	strTempImportPath = OpenFile.GetPathName();
	strImportPath = strTempImportPath;
	UpdateData(FALSE);
	return;

}

int CCSPTEST2Dlg::WriteFile(CString strFilePath, BYTE *pbFiledata, INT nFileLen, CString strFileDescript)
{
	CFile fp;
	if(fp.Open(strFilePath, CFile::modeWrite | CFile::modeCreate) == 0)
	{
		MessageBox("无法写入文件!"+strFileDescript);
		return -1;
	}
	fp.Write(pbFiledata, nFileLen);
	fp.Close();
	return 0;
}


void CCSPTEST2Dlg::OnBrown5() 
{
	// TODO: Add your control notification handler code here
	UpdateData(TRUE);
	char szFilter[] = "*.txt文件(*.txt)|*.txt|全部文件(*.*)|*.*||";
	CFileDialog OpenFile(FALSE, NULL, "*.*", 
		OFN_HIDEREADONLY|OFN_FILEMUSTEXIST|OFN_NOCHANGEDIR, szFilter, NULL);
	if(OpenFile.DoModal() != IDOK)
	{
		return;
	}

	m_strExportSessionPath = OpenFile.GetPathName();
	UpdateData(FALSE);
	return;
}

void CCSPTEST2Dlg::OnBrown6() 
{
	// TODO: Add your control notification handler code here
	UpdateData(TRUE);
	char szFilter[] = "*.txt文件(*.txt)|*.txt|全部文件(*.*)|*.*||";
	CFileDialog OpenFile(TRUE, NULL, "*.*", 
		OFN_HIDEREADONLY|OFN_FILEMUSTEXIST|OFN_NOCHANGEDIR, szFilter, NULL);
	if(OpenFile.DoModal() != IDOK)
	{
		return;
	}

	m_strImportSPubPath= OpenFile.GetPathName();
	UpdateData(FALSE);
	return;
}

void CCSPTEST2Dlg::OnBrown1() 
{
	// TODO: Add your control notification handler code here
	UpdateData(TRUE);
	char szFilter[] = "*.txt文件(*.txt)|*.txt|全部文件(*.*)|*.*||";
	CFileDialog OpenFile(FALSE, NULL, "*.*", 
		OFN_HIDEREADONLY|OFN_FILEMUSTEXIST|OFN_NOCHANGEDIR, szFilter, NULL);
	if(OpenFile.DoModal() != IDOK)
	{
		return;
	}

	m_strExEnPubPath = OpenFile.GetPathName();
	UpdateData(FALSE);
	return;
}

void CCSPTEST2Dlg::OnBrown2() 
{
	// TODO: Add your control notification handler code here
	UpdateData(TRUE);
	char szFilter[] = "*.txt文件(*.txt)|*.txt|全部文件(*.*)|*.*||";
	CFileDialog OpenFile(FALSE, NULL, "*.*", 
		OFN_HIDEREADONLY|OFN_FILEMUSTEXIST|OFN_NOCHANGEDIR, szFilter, NULL);
	if(OpenFile.DoModal() != IDOK)
	{
		return;
	}

	m_strExEnPriPath = OpenFile.GetPathName();
	UpdateData(FALSE);
	return;
}

void CCSPTEST2Dlg::OnBrown3() 
{
	// TODO: Add your control notification handler code here
	UpdateData(TRUE);
	char szFilter[] = "*.txt文件(*.txt)|*.txt|全部文件(*.*)|*.*||";
	CFileDialog OpenFile(FALSE, NULL, "*.*", 
		OFN_HIDEREADONLY|OFN_FILEMUSTEXIST|OFN_NOCHANGEDIR, szFilter, NULL);
	if(OpenFile.DoModal() != IDOK)
	{
		return;
	}

	m_strExSiPubPath = OpenFile.GetPathName();
	UpdateData(FALSE);
	return;
}

void CCSPTEST2Dlg::OnBrown4() 
{
	// TODO: Add your control notification handler code here
	UpdateData(TRUE);
	char szFilter[] = "*.txt文件(*.txt)|*.txt|全部文件(*.*)|*.*||";
	CFileDialog OpenFile(FALSE, NULL, "*.*", 
		OFN_HIDEREADONLY|OFN_FILEMUSTEXIST|OFN_NOCHANGEDIR, szFilter, NULL);
	if(OpenFile.DoModal() != IDOK)
	{
		return;
	}

	m_strExSiPriPath = OpenFile.GetPathName();
	UpdateData(FALSE);
	return;
}

void CCSPTEST2Dlg::OnBrown9() 
{
	// TODO: Add your control notification handler code here
	UpdateData(TRUE);
	char szFilter[] = "*.txt文件(*.txt)|*.txt|全部文件(*.*)|*.*||";
	CFileDialog OpenFile(TRUE, NULL, "*.*", 
		OFN_HIDEREADONLY|OFN_FILEMUSTEXIST|OFN_NOCHANGEDIR, szFilter, NULL);
	if(OpenFile.DoModal() != IDOK)
	{
		return;
	}

	m_strImEnPubPath= OpenFile.GetPathName();
	UpdateData(FALSE);
	return;
}

void CCSPTEST2Dlg::OnBrown10() 
{
	// TODO: Add your control notification handler code here
	UpdateData(TRUE);
	char szFilter[] = "*.txt文件(*.txt)|*.txt|全部文件(*.*)|*.*||";
	CFileDialog OpenFile(TRUE, NULL, "*.*", 
		OFN_HIDEREADONLY|OFN_FILEMUSTEXIST|OFN_NOCHANGEDIR, szFilter, NULL);
	if(OpenFile.DoModal() != IDOK)
	{
		return;
	}
	m_strImEnPriPath= OpenFile.GetPathName();
	UpdateData(FALSE);
	return;
}

void CCSPTEST2Dlg::OnBrown11() 
{
	// TODO: Add your control notification handler code here
	UpdateData(TRUE);
	char szFilter[] = "*.txt文件(*.txt)|*.txt|全部文件(*.*)|*.*||";
	CFileDialog OpenFile(TRUE, NULL, "*.*", 
		OFN_HIDEREADONLY|OFN_FILEMUSTEXIST|OFN_NOCHANGEDIR, szFilter, NULL);
	if(OpenFile.DoModal() != IDOK)
	{
		return;
	}
	m_strImSiPubPath= OpenFile.GetPathName();
	UpdateData(FALSE);
	return;
}

void CCSPTEST2Dlg::OnBrown12() 
{
	// TODO: Add your control notification handler code here
	UpdateData(TRUE);
	char szFilter[] = "*.txt文件(*.txt)|*.txt|全部文件(*.*)|*.*||";
	CFileDialog OpenFile(TRUE, NULL, "*.*", 
		OFN_HIDEREADONLY|OFN_FILEMUSTEXIST|OFN_NOCHANGEDIR, szFilter, NULL);
	if(OpenFile.DoModal() != IDOK)
	{
		return;
	}
	m_strImSiPriPath= OpenFile.GetPathName();
	UpdateData(FALSE);
	return;
}

void CCSPTEST2Dlg::OnBrown7() 
{
	// TODO: Add your control notification handler code here
	UpdateData(TRUE);
	char szFilter[] = "*.txt文件(*.txt)|*.txt|全部文件(*.*)|*.*||";
	CFileDialog OpenFile(TRUE, NULL, "*.*", 
		OFN_HIDEREADONLY|OFN_FILEMUSTEXIST|OFN_NOCHANGEDIR, szFilter, NULL);
	if(OpenFile.DoModal() != IDOK)
	{
		return;
	}
	m_strImSePath= OpenFile.GetPathName();
	UpdateData(FALSE);
	return;
}

void CCSPTEST2Dlg::OnBrown8() 
{
	// TODO: Add your control notification handler code here
	UpdateData(TRUE);
	char szFilter[] = "*.txt文件(*.txt)|*.txt|全部文件(*.*)|*.*||";
	CFileDialog OpenFile(TRUE, NULL, "*.*", 
		OFN_HIDEREADONLY|OFN_FILEMUSTEXIST|OFN_NOCHANGEDIR, szFilter, NULL);
	if(OpenFile.DoModal() != IDOK)
	{
		return;
	}
	m_strImSePriPath= OpenFile.GetPathName();
	UpdateData(FALSE);
	return;
}



void CCSPTEST2Dlg::OnBrown13() 
{
	// TODO: Add your control notification handler code here
	UpdateData(TRUE);
	char szFilter[] = "*.txt文件(*.txt)|*.txt|全部文件(*.*)|*.*||";
	CFileDialog OpenFile(TRUE, NULL, "*.*", 
		OFN_HIDEREADONLY|OFN_FILEMUSTEXIST|OFN_NOCHANGEDIR, szFilter, NULL);
	if(OpenFile.DoModal() != IDOK)
	{
		return;
	}
	m_strImSEnDataPath= OpenFile.GetPathName();
	UpdateData(FALSE);
	return;
}

void CCSPTEST2Dlg::OnButton14() 
{
	// TODO: Add your control notification handler code here
	UpdateData(TRUE);
	char szFilter[] = "*.txt文件(*.txt)|*.txt|全部文件(*.*)|*.*||";
	CFileDialog OpenFile(FALSE, NULL, "*.*", 
		OFN_HIDEREADONLY|OFN_FILEMUSTEXIST|OFN_NOCHANGEDIR, szFilter, NULL);
	if(OpenFile.DoModal() != IDOK)
	{
		return;
	}
	m_strExSDeDataPath= OpenFile.GetPathName();
	UpdateData(FALSE);
	return;
}

⌨️ 快捷键说明

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