Exemplo n.º 1
0
// 密钥输入框内容改变时的响应事件
void CBlockDESForm::OnEnChangeEditKey()
{
	UpdateData(TRUE);

	// 判断编码方式
	if(FALSE == m_stateRadioAnsi)
	{
		// ANSI方式

		// 对复制的长数据进行截断
		if(CStrT2CStrA(m_strKey).GetLength()>8)
			m_strKey = CStrA2CStrT(CStrT2CStrA(m_strKey).Left(8));


		// 计算ANSI方式的十六进制编码
		m_strKeyHex = Text2AnsiHex(m_strKey);

	}
	else
	{
		// Unicode方式

		// 对复制的长数据进行截断
		if(CStrT2CStrW(m_strKey).GetLength()>4)
			m_strKey = CStrW2CStrT(CStrT2CStrW(m_strKey).Left(4));

		//计算Unicode方式的十六进制编码
		m_strKeyHex = Text2UnicodeHex(m_strKey);
	}

	UpdateData(FALSE);
	DoEncrypt();
}
Exemplo n.º 2
0
void CHashMD5Form::OnEnChangeEditPlaintext()
{
	UpdateData(TRUE);

	 //判断编码方式
	if(FALSE == m_stateRadioAnsi)
	{
	//	// ANSI方式

	//	// 计算ANSI方式的十六进制编码
		m_strPlainTextHex = Text2AnsiHex(m_strPlainText);

	}
	else
	{
	//	// Unicode方式

	//	//计算Unicode方式的十六进制编码
		m_strPlainTextHex = Text2UnicodeHex(m_strPlainText);
	}

    UpdateData(FALSE);

    // 判断明文和密钥是否为空,为空则不计算。
	if((!m_strPlainText.GetLength())) 
	{

		m_strCipherTextHex.Empty();
		m_btln1.EnableWindow(FALSE);
		m_btln2.EnableWindow(FALSE);
		
		m_strM10 = _T("");
		m_strM11 = _T("");
		m_strM12 = _T("");
		m_strM13 = _T("");
		m_strM14 = _T("");
		m_strM15 = _T("");
		m_strM16 = _T("");
		m_strM1 = _T("");
		m_strM2 = _T("");
		m_strM3 = _T("");
		m_strM4 = _T("");
		m_strM5 = _T("");
		m_strM6 = _T("");
		m_strM7 = _T("");
		m_strM8 = _T("");
		m_strM9 = _T("");
		UpdateData(FALSE);
		return;
	}
	m_btln1.EnableWindow(TRUE);
	m_btln2.EnableWindow(TRUE);
	DoEncrypt();
}
Exemplo n.º 3
0
void Sekrit::SetPlaintext(const Plaintext& plaintext)
{
	if(plaintext.empty())
	{
		// input empty, reset content
		m_impl->header.realsize = m_impl->header.size = 0;
		memset( m_impl->header.hash, 0, sizeof(m_impl->header.hash) );
		m_impl->data.clear();
	} else
	{
		DoEncrypt(plaintext);
		ComputeHash(m_impl->header.hash, plaintext, m_impl->header.iv);
	}
}