Playfair密码(波雷费密码)的C语言实现

这是一个使用C语言实现Playfair密码加密和解密的程序。程序首先读取用户输入的密钥和文件路径,然后根据密钥生成一个密钥矩阵。用户可以选择对文件进行加密或解密操作。程序跳过了ASCII文件中的非字母字符,并且在字母对相同的情况下插入'X'。加密时,同行右移,同列下移;解密则相反。
摘要由CSDN通过智能技术生成

欢迎大家的评论和指导。算法请参考: http://en.wikipedia.org/wiki/Playfair_cipher
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>

#define ENCRYPT 1
#define DECRYPT -1
// See in: The Cert C Secure Coding Standard
#define STRING(n) STRING_AGAIN(n)
#define STRING_AGAIN(n) #n
#define CHARS_TO_READ 100

FILE *fpSrc = NULL;
FILE *fpDest = NULL;

void flushbuf();
void getkeymatrix(char (*)[5], char *); // 通过输入的密钥生成一个密钥矩阵
void printmatrix(char (*)[5]);
int encrypt(char (*)[5]); // 加密函数
int decrypt(char (*)[5]); // 解密函数
void check(char *, char (*)[5], int); // 查找一对字母在密钥矩阵中对应的字母对

int main(void)
{
    int choice;
    char key[CHARS_TO_READ + 1];
    char srcfile[CHARS_TO_READ + 1];
    char destfile[CHARS_TO_READ + 1];
    char keymatrix[5][5];
    memset(key, 0, CHARS_TO_READ + 1);
    memset(srcfile, 0, CHARS_TO_READ + 1);
    memset(destfile, 0, CHARS_TO_READ + 1);
    memset(keymatrix, 0, 25);
    printf("===============/n"
        "Please select:/n"
        "1.Encrypt/n"
        "2.Decrypt/n"
        "0.Exit/n"
        "Caution: This Program can only apply to ASCII file./n"
        "===============/n");
    do {
       

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值