用C语言2. 编写栅栏密码算法加密、解密编码程序。。求急啊

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用C语言2. 编写栅栏密码算法加密、解密编码程序。。求急啊相关的知识,希望对你有一定的参考价值。

2栏的栅栏密码。
  比如明文:THERE IS A CIPHER
  去掉空格后变为:THEREISACIPHER
  两个一组,得到:TH ER EI SA CI PH ER
  先取出第一个字母:TEESCPE
  再取出第二个字母:HRIAIHR
  连在一起就是:TEESCPEHRIAIHR
  还原为所需密码。
  而解密的时候,我们先把密文从中间分开,变为两行:
  T E E S C P E
  H R I A I H R
  再按上下上下的顺序组合起来:
  THEREISACIPHER
  分出空格,就可以得到原文了:
  THERE IS A CIPHER
有哪位高手可以帮忙写一下,急啊。。。小妹在此谢过了啊。。

参考技术A 小妹这厢有礼了。。^ — ^ 感觉饿这样说会更好

这个又简单又复杂,只对这句话“THERE IS A CIPHER”加解密简单,
但对所有的语句,最后一步之前也简单,但是"分出空格,就可以得到原文了: "
妹子,我怎么知道单词是什么样的追问

就照着这个写就行了嘛。。思想我明白,但就是写不出来呀。。C语言不过关

追答

#include "iostream.h"

void Show(char* date,int lenth,char* S)

cout>j;



刚才错了。。修改

用C语言编程恺撒密码加密解密程序

恺撒密码的替换方法是通过排列明文和密文字母表,密文字母表示通过将明文字母表向左或向右移动一个固定数目的位置。例如,当偏移量是左移3的时候(解密时的密钥就是3):
明文字母表:ABCDEFGHIJKLMNOPQRSTUVWXYZ
密文字母表:DEFGHIJKLMNOPQRSTUVWXYZABC
使用时,加密者查找明文字母表中需要加密的消息中的每一个字母所在位置,并且写下密文字母表中对应的字母。需要解密的人则根据事先已知的密钥反过来操作,得到原来的明文。例如:
明文:THE QUICK BROWN FOX JUMPS OVER THE LAZY DOG
密文:WKH TXLFN EURZQ IRA MXPSV RYHU WKH ODCB GRJ
用到C语言函数
fopen(“D:\\test\\a1”,”r”) 以只读的方式打开名为a1的文件,a1文件位于D:\test\下。
fopen(“D:\\test\\a1”,”w”) 以写的方式打开名为a1的文件,a1文件位于D:\test\下。
fgets(str,n,fp) 从fp指向的文件读入一个长度为n的字符串,存放到字符数组str中
fputs(str,fp):把str所指向的字符串写到文件指针变量fp所指向的文件中

#include <stdio.h>

#define isletter( c )    ( ((c)>='a'&&(c)<='z') || ((c)>='A'&&(c)<='Z') )

void Enc( const char *str, char *out, int key )

    int i = 0; 
    while( str[i] )
    
        if ( isletter( str[i] ) )
        
            out[i] = str[i] + key;
            if ( ! isletter( out[i])  )
                out[i] -= 26;
        
        else
            out[i] = str[i];
        i++;
    
    out[i] = 0;

void Denc( const char *str, char *out, int key )

    int i=0;
    while( str[i] )
    
        if ( isletter( str[i] ) )
        
            out[i] = str[i] - key;
            if ( ! isletter( out[i] ) )
                out[i] += 26;
        
        else
            out[i] = str[i];
        i++;
    
    out[i] = 0;


int main()

    char  out[100], out2[100];
    Enc( "THE QUICK BROWn fox jumps over THE LAZY DOG", out, 3 );
    printf( "%s\\n", out );
    Denc( out, out2, 3 );
    printf( "%s\\n", out2 );

追问

不好意思,运行界面怎么不是跟图的一样?

追答
参考技术A 这个我之前写过

未加密文字:THE BUTCHER THE BAKER AND THE CANDLESTICK MAKER。(屠夫、面包师和蜡烛匠)。
关键密钥:BIG BIGBIGB IGB IGBIG BIG BIG BIGBIGBIGBI GBIGB
加密文字:UPK CCZDPKS BNF JGLMX BVJ UPK DITETKTBODS SBSKS

#include<stdio.h>
#include<string.h>
void main()

char str[99],k[10],m[99]="";
unsigned i,j=0,n;
printf("输入要加密的内容\\n");
gets(str);
printf("输入密匙\\n");
gets(k);
n=strlen(k);
for(i=0;i<strlen(str);i++)

if(str[i]==' ')m[i]=' ';
else

m[i]=str[i]+k[j]-'A';
if(m[i]>'Z')m[i]=m[i]-26;
j++;

if(j==n)j=0;

printf("加密后\\n");
puts(m);

追问

不好意思,运行界面怎么不是跟图的一样?

追答

以上是关于用C语言2. 编写栅栏密码算法加密、解密编码程序。。求急啊的主要内容,如果未能解决你的问题,请参考以下文章

C语言英文文本加密

用C语言编程恺撒密码加密解密程序

求RSA加密解密算法,c++源代码

ivoleuoy栅栏密码怎么解

C语言练习_2用C语言实现凯撒密码加密解密

凯撒密码实现英文短句的加解密