问题 C: 解密信息

问题 C: 解密信息

时间限制: 1 Sec  内存限制: 32 MB
提交: 68  解决: 53
[提交] [状态] [命题人:外部导入]

题目描述

一天,小明收到了小红给他发来的一封邮件,但是大眼看上去是一堆乱码,不过在邮件的最后小明看到了小红写的邮件解密的方法,举例如下:
给出一串解密key,例如yrwhsoujgcxqbativndfezmlpk。
这串解密key的意思就是邮件中的‘a’实际上应该是‘y’,邮件中的‘b’实际上应该是‘r’,邮件中的‘c’实际上应该是‘w’,以此类推。邮件中的空格不需要解密,按原样显示即可。

 

输入

输入包含多组测试数据。
每组输入的第一行为一个包含26个小写字母的字符串,表示解密key。
每组输入的第二行为一个长度不超过80的字符串,表示待解密的邮件内容,其中包含大小写字母、空格。

 

输出

对于每组输入,输出解密后的邮件内容,每组输出占一行。

 

样例输入

eydbkmiqugjxlvtzpnwohracsf
Kifq oua zarxa suar bti yaagrj fa xtfgrj
 

样例输出

Jump the fence when you seeing me coming

 这个题我看完题,立马开打代码,以为是map来着。

没想到这么简单直接两个字符串数组下标对应一下就行了,黑脸微笑,(好想给自己来个大嘴巴子)

 

 实现代码:

#include <stdio.h>
int main()
{
	char a[30], b[100]; 
	while(gets(a))
	{
	    int i=0, j=0;
		gets(b);
	while(b[i] != '\0')
	{
		if(b[i] == ' ')
			printf(" ");
		else if(b[i] >= 'a')//为小写字母时 
			printf("%c", a[b[i]-97]);//下标对应的 
		else
			printf("%c", a[b[i]-65]-32);
		i++;
	}
	printf("\n");
	}
	return 0;
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
C语言中的DES解密代码是通过调用相关库函来实现的。首先需要引入相关头文件,比如<stdio.h>和<openssl/des.h>。然后需要定义DES 解密,通常命名为DES_decrypt,其中传入参为密文、密钥和输出明文的地址。在函内部,首先需要通过DES_set_key_unchecked函设置密钥,然后再调用DES_ecb_encrypt函进行解密操作。解密完成后,将明文输出到指定地址即可。 下面是一个简单的C语言DES解密代码示例: ```c #include <stdio.h> #include <openssl/des.h> void DES_decrypt(const unsigned char *cipher_text, const unsigned char *key, unsigned char *plain_text) { DES_cblock des_key; DES_key_schedule schedule; // 设置密钥 memcpy(des_key, key, 8); DES_set_key_unchecked(&des_key, &schedule); // 解密操作 DES_ecb_encrypt((const_DES_cblock *)cipher_text, (DES_cblock *)plain_text, &schedule, DES_DECRYPT); } int main() { unsigned char key[8] = {0x01, 0x23, 0x45, 0x67, 0x89, 0xAB, 0xCD, 0xEF}; unsigned char cipher_text[8] = {0x85, 0xE7, 0xC8, 0x9D, 0x08, 0xB5, 0x79, 0x0C}; unsigned char plain_text[8]; // 解密 DES_decrypt(cipher_text, key, plain_text); // 打印明文 printf("Plain text: "); for(int i = 0; i < 8; i++) { printf("%02X ", plain_text[i]); } printf("\n"); return 0; } ``` 以上代码演示了如何使用C语言中openssl库进行DES解密操作。首先定义了DES_decrypt函来进行解密操作,并在main函中调用该函完成解密并输出明文结果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值