gpt4 book ai didi

c - 用 C 加密消息

转载 作者:行者123 更新时间:2023-11-30 15:16:28 25 4
gpt4 key购买 nike

我必须编写一个函数来使用给定的加密 key 对作为字符串输入给出的消息进行加密。该函数应将加密消息作为字符串输出到参数列表中的 cryptoMessage 中。函数原型(prototype)必须如下所示: void encryptMessage(char *encryptedMessage, char *message, char *encryptionKey); 该函数必须获取加密 key 并转换其每个字符,这些字符代表十六进制数字,转换为等效的十进制整数值。我已经编写了一个将十六进制转换为十进制的函数。然后,必须通过将这些整数值中的第一个添加到消息中第一个字符的 ASCII 值,并将第二个整数值添加到消息中的第二个字符,依此类推,对消息进行加密,然后再次从每 16 之后的第一个整数值。如果消息比加密 key 长,则这是必要的(通常是这种情况)。

这是迄今为止我的一些代码:

void encryptMessage(char *encryptedMessage, char *message, char *encryptionKey)
{
int *arr = malloc(sizeof(int)*getStringLength(encryptionKey));

int i;
for(i = 0;i < getStringLength(encryptionKey);i++){
arr[i] = hexDigit2Dec(encryptionKey[i]);
message[i] = message[i] + (char)arr[i];

if(getStringLength(message ) > getStringLength(encryptionKey)){
i = 0;
}
}

free(arr);
}

当我运行它时,会弹出“project.exe已停止”。请帮助我,我是 C 语言新手,遇到了很多困难。

最佳答案

您需要 2 个计数器:一个用于加密 key 位置,另一个用于正在处理的字符。

您正在使用 1,并在消息长度超过 key 导致无限循环时将其重置为零

for ( keyPos = 0, msgPos = 0; msgPos < getStringLength(message ); ++keyPos, ++msgPos )
{
// calculate and append next char to encrypted message here

if ( keyPos >= getStringLength(encryptionKey)
{
keyPos = 0;
}
}

关于c - 用 C 加密消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33065024/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com