随笔 - 117  文章 - 72  trackbacks - 0

声明:原创作品(标有[原]字样)转载时请注明出处,谢谢。

常用链接

常用设置
常用软件
常用命令
 

订阅

订阅

留言簿(7)

随笔分类(130)

随笔档案(123)

搜索

  •  

积分与排名

  • 积分 - 154450
  • 排名 - 389

最新评论

[标题]:使用"异或"简单加密的实现
[时间]: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;
}
posted on 2009-04-19 19:30 天堂露珠 阅读(1022) 评论(0)  编辑  收藏 所属分类: C++

只有注册用户登录后才能发表评论。


网站导航: