记录黑客技术中优秀的内容,传播黑客文化,分享黑客技术精华

换位加密法与解密的实现 VC 版

2013-05-09 17:05

今天看了guset 牛的贴子<<换位加密法与解密>> 感觉这个加解密比较简单但也比较巧妙,小菜平时作为伸手党,很遗憾没能力为论坛做贡献,今天就把这个算法用VC实现一下,把代码分享给论坛的基友,算是对论坛的一点支持吧……  欢迎大家拍砖!

关于换位加密法 guset牛在他的贴子中说得比较清楚了(其实是度娘的,呵呵,^_^),这里就不赘述,也看到guset牛 尝试写了一个解密函数,但是不对,小菜觉得guset牛在代码中可能忽略了对密钥的排序(不知是不是代码没有贴出来),并且貌似代码中数组下标溢出了,所以会一运行就关闭了…………。

在今天写代码实现的时候才发觉,这个密钥的排序与整理确实比较重要,下们就帖出关键的代码吧,一个是排序,这个估计大家都懂。

0×01  密钥排序
//对Key进行排序

 

bool Encrypt::GetKeySort()
         {
        int AllSort[MINGCODEMAXLEN]        = {-1};           // 用"空间定位法"进行排序
        memset(AllSort,-1,sizeof(AllSort));
 
        int len = strlen(MysortChar);
 
        //确定在字符表中的位置
        for(int i = 0 ; i &lt; lenKey ; i++)
        {
                for(int j = 0 ; j &lt; len; j++)
                {
                        if(Key[i] == MysortChar[j])
                                AllSort[j] = i;
                }
        }
 
        int index = 0;
        //确定排序前后位置
        for(int t = 0  ; t &lt; len ; t++)         {                 if(AllSort[t]&gt;=0)        //存在该字符
                {
                        KeySort[index] = AllSort[t] ;  //  index  代表排序位置    KeySort[index] 代表 该位置的字符在原字符串的位置
                        index++;
                }
        }
 
        return true;
            }

0x 02 解密函数

//进行解密
bool Encrypt::DoDeEncrypt()
{
 
        GetKeySort();                //关键是对Key进行排序
 
        int i , j=0;
    int iIndex = 0;
    int iRol = 0;
 
        for(i  = 0 ; i &lt; lenKey ; i++)        //实现排序后的程序
        {
 
                j = KeySort[i] ;
                iRol = 1;
                while(j &lt; lenCipher)
                {
                        PlaintText[j] = Ciphertext[iIndex++];
                        j = iRol*lenKey + KeySort[i];
                        iRol++;
                }
 
        }
        PlaintText[lenCipher] = 0;
 
        return true;
}

0×03 加密函数

bool Encrypt::DoEncrypt()
{
        GetKeySort();                //对Key排序
 
        int i , j=0;
    int iIndex = 0;
    int iRol = 0;
 
        for(i  = 0 ; i &lt; lenKey ; i++)        //实现排序后的程序
        {
 
                j = KeySort[i] ;
                iRol = 1;
                while(j &lt; lenPlain)
                {
                        Ciphertext[iIndex++] = PlaintText[j];                //解密其实就是加密的逆过程
                        j = iRol*lenKey + KeySort[i];
                        iRol++;
                }
 
        }
        Ciphertext[iIndex] = 0;  // 
 
        return true;
}

大家可以看到,其实加密与解决过程都是比较简单的。小菜在这里就不多解释了,下面附上成品与源代码,欢迎大家拍砖与指正!

效果图:
show.PNG

因时间比较赶,美工能力也有限,所以界面大家就将就一下吧……。呵呵!

知识来源: www.panni007.com/2013/05/09/1006.html

阅读:111628 | 评论:0 | 标签:黑客攻防 VC 换位加密 解密 加密

想收藏或者和大家分享这篇好文章→复制链接地址

“换位加密法与解密的实现 VC 版”共有0条留言

发表评论

姓名:

邮箱:

网址:

验证码: