zoukankan      html  css  js  c++  java
  • RC4算法示例

    key为密钥~

    #include<iostream>
    #include
    <string>
    using namespace std;
    int s[256];
    int t[256];
    string key="0123456789";
    void swap(int* s1,int* s2){
        
    int temp=*s1;
        
    *s1=*s2;
        
    *s2=temp;
    }
    void init(){
        
    //初始化s和t数组
        for(int i=0;i<256;i++){
            s[i]
    =i;
            t[i]
    =atoi(&(const char)(key.at(i%key.length())));
        }
        
    int j=0;
        
    for(int i=0;i<256;i++){
            j
    =(j+s[j]+t[j])%256;
            swap(s
    +i,s+j);
        }
    }
    void encode(int* start,int length){
        
    int pos=0;
        
    int i=0,j=0;
        
    while(pos++<length){
            i
    =(i+1)%256;
            j
    =(j+s[i])%256;
            swap(s
    +i,s+j);
            
    int temp=(s[i]+s[j])%256;
            
    int k=s[temp];
            
    *start^=k;
            start
    ++;
        }
    }
    void decode(int* start,int length){
        encode(start,length);
    }
    void print(int* a,int length,string startMessage=""){
        cout
    <<startMessage<<" ";
        
    for(int i=0;i<length;i++){
            cout
    <<*(a+i)<<" ";
        }
        cout
    <<endl;
    }
    int main(){
        init();
        
    int a[10]={0,1,2,3,4,5,6,7,8,9};
        print(a,
    10,"原数组");
        encode(a,
    10);
        print(a,
    10,"加密后");
        init();
        decode(a,
    10);
        print(a,
    10,"解密后");
    }
  • 相关阅读:
    java之正则表达式
    mysql之自定义函数
    mysql之replace into与 insert into duplicat key for update
    mysql之命令行导入导出
    Echarts修改legend样式
    ubuntu出现 E: Sub-process /usr/bin/dpkg returned an error code
    ubuntu总是提是E: 不能满足依赖关系。不妨试一下 -f 选项
    ubuntu安装和查看已安装软件
    放爬虫nginx
    nginx日志切割
  • 原文地址:https://www.cnblogs.com/CUCmehp/p/1356381.html
Copyright © 2011-2022 走看看