Rayanoos.ir 1397/01/4 11:35
در این پست تابعی را در اختیارتان میگذاریم که با استفاده از آن می توانید متن هارا رمزنگاری، و به حروف بی معنی تبدیل کرده و سپس متن رمزنگاری شده را مجددا ترجمه کرده و به حالت اول برگردانید


درحقیقت این تابع ، متن را به صورت پوینتر کاراکتری گرفته و با چندین بار جابه جایی حروف آن متن را تغییر می دهد. به عنوان مثال A تبدیل می شود به H ،  و H تبدیل می شود به I و...

در نهایت   www.Rayanoos.ir  تبدیل می شود به ttt.Jhnhfbbs.xj4

و اگر متن رمزنگاری شده را برای ترجمه وارد کنیم ، همان متن اولیه را برمیگرداند.

نکته قابل توجه این است که این جایگذاری ها مشخص نیستند، برای مثال ممکن است A تبدیل شود به F اما در یک متن دیگر A تبدیل شود به R

دلیل آن چند بار رمزنگاری شدن به صورت رندوم است،  تابع به تعداد یک عدد رندوم متن را رمزنگاری می کند و سپس آن عدد را به آخر متن رمزنگاری شده اضافه می کند، از این رو هنگام ترجمه آن عدد که آخرین کاراکتر متن است گرفته می شود و به تعداد آن عدد، متن ترجمه می شود.

این تابع در هدر فایل turing.h قرار دارد که میتوانید با include کردن آن در برنامه هایتان و با استفاده از تابع


turing(char *str,int TOPAS_OR_TOSTR,int strsize)

متن را رمز نگاری کنید که می بایست در اولین پارامتر آن متن خود را به صورت یک آرایه کارکتری و در پارامتر آن  رمزنگاری شدن یا ترجمه شدن متن و در پارامتر سوم طول آرایه خود را وارد کنید.
نکته : برای رمزنگاری متن در پارامتر دوم می بایست TOPAS را وارد کرده و برای ترجمه TOSTR را وارد کنید.

تابع میتواند به شکل زیر فراخوانی شود:
[1024]char str
gets(str)
turing( str , TOPAS , sizeof(str))
printf("%s",str)

دانلود سورس کد با لینک مستقیم | Main.c & Turing.h

اگر سوال یا مشکلی دارید میتوانید با آیدی تلگرامی زیر در تماس باشید
T.me/Cpp_py





// turing.h :

#include <stdio.h>
#define TOSTR 0
#define TOPAS 1
#define FNAME "1l3ssfdsfm30"


void turing(char *str,int TOPAS_OR_TOSTR,int strsize)
{
    int sizer;
    int td;
    int ia,ie;
    FILE *f;

    for (ia=rand()%20; ia; --ia)
        td = rand()%8;
    td++;
    int tdsave=td;
    if (TOPAS_OR_TOSTR)
    {
        for ( ; td ; td--)
        {
            for(sizer=0 ; sizer<strsize ; sizer++ )
            {
                switch (str[sizer])
                {
                case 'a':
                    str[sizer]='q';
                    break;
                case 'b':
                    str[sizer]='w';
                    break;
                case 'c':
                    str[sizer]='e';
                    break;
                case 'd':
                    str[sizer]='r';
                    break;
                case 'e':
                    str[sizer]='t';
                    break;
                case 'f':
                    str[sizer]='y';
                    break;
                case 'g':
                    str[sizer]='u';
                    break;
                case 'h':
                    str[sizer]='i';
                    break;
                case 'i':
                    str[sizer]='o';
                    break;
                case 'j':
                    str[sizer]='p';
                    break;
                case 'k':
                    str[sizer]='a';
                    break;
                case 'l':
                    str[sizer]='s';
                    break;
                case 'm':
                    str[sizer]='d';
                    break;
                case 'n':
                    str[sizer]='f';
                    break;
                case 'o':
                    str[sizer]='g';
                    break;
                case 'p':
                    str[sizer]='h';
                    break;
                case 'q':
                    str[sizer]='j';
                    break;
                case 'r':
                    str[sizer]='k';
                    break;
                case 's':
                    str[sizer]='l';
                    break;
                case 't':
                    str[sizer]='z';
                    break;
                case 'u':
                    str[sizer]='x';
                    break;
                case 'v':
                    str[sizer]='c';
                    break;
                case 'w':
                    str[sizer]='v';
                    break;
                case 'x':
                    str[sizer]='b';
                    break;
                case 'y':
                    str[sizer]='n';
                    break;
                case 'z':
                    str[sizer]='m';
                    break;
                case 'A':
                    str[sizer]='Q';
                    break;
                case 'B':
                    str[sizer]='W';
                    break;
                case 'C':
                    str[sizer]='E';
                    break;
                case 'D':
                    str[sizer]='R';
                    break;
                case 'E':
                    str[sizer]='T';
                    break;
                case 'F':
                    str[sizer]='Y';
                    break;
                case 'G':
                    str[sizer]='U';
                    break;
                case 'H':
                    str[sizer]='I';
                    break;
                case 'I':
                    str[sizer]='O';
                    break;
                case 'J':
                    str[sizer]='P';
                    break;
                case 'K':
                    str[sizer]='A';
                    break;
                case 'L':
                    str[sizer]='S';
                    break;
                case 'M':
                    str[sizer]='D';
                    break;
                case 'N':
                    str[sizer]='F';
                    break;
                case 'O':
                    str[sizer]='G';
                    break;
                case 'P':
                    str[sizer]='H';
                    break;
                case 'Q':
                    str[sizer]='J';
                    break;
                case 'R':
                    str[sizer]='K';
                    break;
                case 'S':
                    str[sizer]='L';
                    break;
                case 'T':
                    str[sizer]='Z';
                    break;
                case 'U':
                    str[sizer]='X';
                    break;
                case 'V':
                    str[sizer]='C';
                    break;
                case 'W':
                    str[sizer]='V';
                    break;
                case 'X':
                    str[sizer]='B';
                    break;
                case 'Y':
                    str[sizer]='N';
                    break;
                case 'Z':
                    str[sizer]='M';
                    break;
                case ' ':
                    str[sizer]='$';
                    break;
                }
            }
        }


        f=fopen(FNAME, "w");
        fprintf(f," %s%d",str,tdsave);
        fclose(f);
        f=fopen(FNAME,"r");
        fscanf(f,"%s",str);
        fclose(f);
        f=fopen(FNAME,"w");
        fprintf(f,"");
        fclose(f);
    }
    else
    {
        char ptr[strsize];
        int ii;
        char chnumber;
        for(ii=0; ii<sizeof(ptr); ++ii)
            ptr[ii]='\0';
        strcpy(ptr,str);
        for(ii=0; ii<sizeof(ptr); ++ii)
        {
            if(ptr[ii]=='\0')
            {
                chnumber=ptr[ii-1];
                ptr[ii-1]='\0';
                strcpy(str,ptr);
                break;
            }
        }
        f=fopen(FNAME,"w");
        fprintf(f,"%c",chnumber);
        fclose(f);
        f=fopen(FNAME,"r");
        fscanf(f,"%d",&ii);
        fclose(f);
        f=fopen(FNAME,"w");
        fprintf(f,"");
        fclose(f);

        for(; ii; --ii)
        {
            for(sizer=0 ; sizer<strsize ; sizer++ )
            {
                switch (str[sizer])
                {
                case 'q':
                    str[sizer]='a';
                    break;
                case 'w':
                    str[sizer]='b';
                    break;
                case 'e':
                    str[sizer]='c';
                    break;
                case 'r':
                    str[sizer]='d';
                    break;
                case 't':
                    str[sizer]='e';
                    break;
                case 'y':
                    str[sizer]='f';
                    break;
                case 'u':
                    str[sizer]='g';
                    break;
                case 'i':
                    str[sizer]='h';
                    break;
                case 'o':
                    str[sizer]='i';
                    break;
                case 'p':
                    str[sizer]='j';
                    break;
                case 'a':
                    str[sizer]='k';
                    break;
                case 's':
                    str[sizer]='l';
                    break;
                case 'd':
                    str[sizer]='m';
                    break;
                case 'f':
                    str[sizer]='n';
                    break;
                case 'g':
                    str[sizer]='o';
                    break;
                case 'h':
                    str[sizer]='p';
                    break;
                case 'j':
                    str[sizer]='q';
                    break;
                case 'k':
                    str[sizer]='r';
                    break;
                case 'l':
                    str[sizer]='s';
                    break;
                case 'z':
                    str[sizer]='t';
                    break;
                case 'x':
                    str[sizer]='u';
                    break;
                case 'c':
                    str[sizer]='v';
                    break;
                case 'v':
                    str[sizer]='w';
                    break;
                case 'b':
                    str[sizer]='x';
                    break;
                case 'n':
                    str[sizer]='y';
                    break;
                case 'm':
                    str[sizer]='z';
                    break;
                case 'Q':
                    str[sizer]='A';
                    break;
                case 'W':
                    str[sizer]='B';
                    break;
                case 'E':
                    str[sizer]='C';
                    break;
                case 'R':
                    str[sizer]='D';
                    break;
                case 'T':
                    str[sizer]='E';
                    break;
                case 'Y':
                    str[sizer]='F';
                    break;
                case 'U':
                    str[sizer]='G';
                    break;
                case 'I':
                    str[sizer]='H';
                    break;
                case 'O':
                    str[sizer]='I';
                    break;
                case 'P':
                    str[sizer]='J';
                    break;
                case 'A':
                    str[sizer]='K';
                    break;
                case 'S':
                    str[sizer]='L';
                    break;
                case 'D':
                    str[sizer]='M';
                    break;
                case 'F':
                    str[sizer]='N';
                    break;
                case 'G':
                    str[sizer]='O';
                    break;
                case 'H':
                    str[sizer]='P';
                    break;
                case 'J':
                    str[sizer]='Q';
                    break;
                case 'K':
                    str[sizer]='R';
                    break;
                case 'L':
                    str[sizer]='S';
                    break;
                case 'Z':
                    str[sizer]='T';
                    break;
                case 'X':
                    str[sizer]='U';
                    break;
                case 'C':
                    str[sizer]='V';
                    break;
                case 'V':
                    str[sizer]='W';
                    break;
                case 'B':
                    str[sizer]='X';
                    break;
                case 'N':
                    str[sizer]='Y';
                    break;
                case 'M':
                    str[sizer]='Z';
                    break;
                case '$':
                    str[sizer]=' ';
                    break;
                }

            }
        }
    }
}

//  Main.c :
#include <stdio.h>
#include <stdlib.h>
#include "turing.h"

#define STRSIZE 2048


int main()
{
    char ch;
    char str[STRSIZE];
    int ia;
    char cmd1[]={119,119,119,46,82,97,121,97,110,111,111,115,46,105,114,'\0'},cmd[256]="title Text Cipher :: ";

    strcat(cmd,cmd1);
label:
    system(cmd);
    system("color 1f");
    system("cls");

    printf("\n\
\t[ 1 ] Make Secret str\n\
\t[ 2 ] Compile Secret str\n\
\t[ 0 ] Exit\n\n\t>>: ");

    ch=getch();

    if (ch=='1' || ch=='2')
    {
        printf("\n Enter Text: ");

        gets(str);

        if(ch=='1')
            turing(str,TOPAS,STRSIZE);
        if(ch=='2')
            turing(str,TOSTR,STRSIZE);

        FILE * f;
        f=fopen("rayanoos.ir.txt","w");
        fprintf(f,"%s",str);
        fclose(f);

        printf("\n\n\t>>: %s\n\n",str);
        system("\"rayanoos.ir.txt\"");
        printf("Press any key for start again.");
        getch();
    }
    else
    {
        if (ch=='0')
            return 0;
    }
    goto label;
}