【发布时间】:2016-04-24 04:01:47
【问题描述】:
我用 C 语言编写了两个小程序,crypt 和 decrypt。
我可以从终端拨打电话:
./crypt some_argument it works.
但我想通过解密crypt 的输出。
我已经试过了:
./decrypt $(./crypt hello) does not work
./crypt hello | ./decrypt does not work
源代码: 地穴:
#include <stdio.h>
#include <stdlib.h>
#define CRYPT_KEY 5
char *crypto(char *str) {
char *tmp_adr = str;
while (*str != 0) {
*str += CRYPT_KEY;
str++;
}
return tmp_adr;
}
int main(int argc, char *argv[]) {
printf("Crypted message: %s\n", crypto(argv[1]));
}
Decypt 是一样的,但这里有一个减号:
*str -= CRYPT_KEY;
有人知道怎么做吗?
【问题讨论】:
-
什么是
some_argument?一个文本字符串?你怎么称呼./decrypt?crypt输出二进制数据吗? -
发布你的 crypt 程序的输出。您是否解密程序读取数据以从参数或标准输入解密?
-
一个可能的问题是,crypt 的输出不仅仅是加密的字符串,而是有额外的文本 "Crypted message:" ,解密可以处理吗?请删除它并尝试一下。
-
是的,你是对的@Eric thx。发现了问题,真是傻事。使用 crypt 我输出了一条完整的消息“Crypted message: %s\n”,所以很明显,如果我给它解密将找不到相同的东西。命令
./decrypt $(./crypt2 culo)可以在正确的程序下正常工作。