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,"解密后");
    }
  • 相关阅读:
    智能车回忆
    自动化面试问题
    先进控制理论(转载)
    电力电子技术(转载)
    微型计算机原理及应用复习(转载)
    c语言中数值交换用值传递和地址传递
    unity调用苹果端方法
    unity调用安卓arr方法
    unity mono单例
    loading通用界面笔记
  • 原文地址:https://www.cnblogs.com/CUCmehp/p/1356381.html
Copyright © 2011-2022 走看看