[标题]:使用"异或"简单加密的实现
[时间]:2009-4-19
[摘要]:需要使用加密算法加密密码,但是面对DES等算法,实现起来还是有难度的。并且自己的应用也不需要很强的加密算法,只要不直接使用明文就可以了。所以,实现了用"异或"简单加密密码。加密解密都是使用同一算法。要提醒的是,这种加密并不可靠,而且极易被破解。
[关键字]:异或,加密,解密,DES,密码,简单,算法
[环境]:VC6
[作者]:Winty (wintys@gmail.com)
[正文]:
加密原理:
a^b => c , c^b => a
一次"异或"之后,明文变成密文。
两次"异或"之后,密文被解密成明文。
那么,a就是需要加密的明文,b就是密钥,c就是密文。
[时间]:2009-4-19
[摘要]:需要使用加密算法加密密码,但是面对DES等算法,实现起来还是有难度的。并且自己的应用也不需要很强的加密算法,只要不直接使用明文就可以了。所以,实现了用"异或"简单加密密码。加密解密都是使用同一算法。要提醒的是,这种加密并不可靠,而且极易被破解。
[关键字]:异或,加密,解密,DES,密码,简单,算法
[环境]:VC6
[作者]:Winty (wintys@gmail.com)
[正文]:
加密原理:
a^b => c , c^b => a
一次"异或"之后,明文变成密文。
两次"异或"之后,密文被解密成明文。
那么,a就是需要加密的明文,b就是密钥,c就是密文。
void CTestDlg::OnBtnEncrypt()
{
CString strText = "password";
CString strSecret;//密文
CString strPlain;//解密后的明文
strSecret = Encrypt(strText);
AfxMessageBox(strSecret);
strPlain = Encrypt(strSecret);
AfxMessageBox(strPlain);
//解密是否正确
if(strText.Compare(strPlain) == 0)
AfxMessageBox("OK");
}
CString CTestDlg::Encrypt(const CString &strText)
{
CString strContent(strText);
CString strKey = "It's kind of you to visit me!!";//Length:30chars
TCHAR t;
TCHAR k;
//加密内容最大长度为30,多于30字符的不加密
for(int i = 0 ; i < strContent.GetLength() && i < strKey.GetLength(); i++){
t = strContent.GetAt(i);
k = strKey.GetAt(i);
t ^= k;//与Key异或加密
strContent.SetAt(i , t);
}
return strContent;
}
{
CString strText = "password";
CString strSecret;//密文
CString strPlain;//解密后的明文
strSecret = Encrypt(strText);
AfxMessageBox(strSecret);
strPlain = Encrypt(strSecret);
AfxMessageBox(strPlain);
//解密是否正确
if(strText.Compare(strPlain) == 0)
AfxMessageBox("OK");
}
CString CTestDlg::Encrypt(const CString &strText)
{
CString strContent(strText);
CString strKey = "It's kind of you to visit me!!";//Length:30chars
TCHAR t;
TCHAR k;
//加密内容最大长度为30,多于30字符的不加密
for(int i = 0 ; i < strContent.GetLength() && i < strKey.GetLength(); i++){
t = strContent.GetAt(i);
k = strKey.GetAt(i);
t ^= k;//与Key异或加密
strContent.SetAt(i , t);
}
return strContent;
}