• 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,"解密后");
    }
  • 相关阅读:
    微擎签名出错 invalid signature
    微擎 pdo_fetchall() 函数
    Qt 文本文件的读写操作
    Qt Qlistwidget、Qlistview
    Qt保留小数点后一位、两位……
    Excel怎么快速删除全部空行
    光学镜头参数详解(EFL、TTL、BFL、FFL、FBL/FFL、FOV、F/NO、RI、MTF、TV-Line、Flare/Ghost)
    Image J 介绍
    C# MODBUS协议上位机程序
    C/C++ memmove与memcpy的区别及实现
  • 原文地址:https://www.cnblogs.com/CUCmehp/p/1356381.html
Copyright © 2020-2023  润新知