|
发表于 2023-12-21 16:34:48
|
显示全部楼层
这个问题的原因是你在定义 `unsigned char` 类型的数组时,只定义了单个字符而不是字符数组。因此,在输入密码的时候会报错。
为了解决这个问题,你需要将 `unsigned char src` 和 `unsigned char dest` 定义为字符数组。修改代码如下:
- #include <stdio.h>
- #include <string.h>
- #include "md5.h"
- void md5(unsigned char *dest, unsigned char *src);
- void md5(unsigned char *dest, unsigned char *src)
- {
- int i;
- MD5_CTX md5;
- // 初始化
- MD5Init(&md5);
- // 传入明文字符串及其长度
- MD5Update(&md5, src, strlen((char *)src));
- // 得到加密后的字符串
- MD5Final(&md5, dest);
- }
- int main(void)
- {
- int i;
- unsigned char src[100]; // 定义字符数组
- unsigned char dest[16]; // 定义字符数组
- printf("请输入密码:");
- scanf("%s", src);
- printf("你输入的密码是:%s\n", src);
- md5(dest, src);
- printf("加密后的密码是:");
- for (i = 0; i < 16; i++)
- {
- printf("%02x", dest[i]);
- }
- putchar('\n');
- return 0;
- }
复制代码
现在重新编译和运行代码,应该就不会再报错了。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 |
|