【加密教程】:加密教程五之feistel算法加密

前言

前面我们介绍了一些常用的加密方法,这次我们介绍一个不同前面的加密方法,叫feistel加密,别看名字这么洋气,其实都是纸老虎~
那么让我们一起来看吧,这个算法是什么样子的

给出一个字符串,给出两段长度a,b a,b分掉字符串长度,把b段直接放到前面,把a段进行加密后放到b段后面(够简洁吧,不明白就看例子)

例子:
ABCDEF 这是个字符串 被 2 4 分掉 //因为2+4=6(字符串长度)
然后把后面的四个字符直接放到前面来 CDEF
前面2个字符进行加3的简单加密 变成:DE
然后连接起来,最终结果是 CDEFDE ~~~ 简单吧~

实现思路

很简单的对字符串的处理

代码实现

#include <iostream>
#include <string>
using namespace std;
void main(){
    cout<<"请输入A块长度,B块长度"<<endl;
    int length_a,length_b,pos=0;
    cin>>length_a>>length_b;
    string s;
    getchar();
    cin>>s;
    char res[1000];
    if(s.length()!=(length_a+length_b)){
        cout<<"mistake,length is not equal"<<endl;
        return ;
    }
    for(int i=length_a;i<length_a+length_b;i++){ 
        res[pos] = s[i];
        pos++;
    }
    for(i=0;i<length_a;i++){
        if((s[i]>='a'&&s[i]<'x')||(s[i]>='A'&&s[i]<'X')){
                res[pos]=(char)(s[i]+3);
                pos++;
            }
        else {
            res[pos]=(char)(s[i]+3-26);
            pos++;
        }
    }
    res[pos] = '\0';
    cout<<res<<endl;
}

程序截图

结果分析:
第一行为输入
第二行为加密报文输出

===============================
Happy Coding
Seen

你可能感兴趣的:(加密,算法)