鱼C论坛

 找回密码
 立即注册
查看: 6116|回复: 14

[已解决]实现md5为什么编译不了?

[复制链接]
发表于 2021-5-28 20:38:51 | 显示全部楼层 |阅读模式
10鱼币
  1. #include <stdio.h>
  2. #include <string.h>
  3. #include "md5.h"
  4. #define MAX 1024
  5. int main(void)
  6. {
  7.         int i,sum;
  8.         unsigned char encrypt[MAX];
  9.         unsigned char decrypt[MAX];
  10.         
  11.         printf("请输入密码:");
  12.         fgets(encrypt, MAX, stdin);
  13.         
  14.         sum = strlen((char *)encrypt);
  15.         
  16.         printf("你输入的密码是:");
  17.                 for (i = 0; i < sum; i++)
  18.                 {       
  19.                                 printf("%c", encrypt[i]);
  20.                 }
  21.                
  22.         MD5_CTX md5;

  23.         // 初始化
  24.         MD5Init(&md5);
  25.         // 传入明文字符串及其长度
  26.         MD5Update(&md5, encrypt, strlen((char *)encrypt));
  27.         // 得到加密后的字符串
  28.         MD5Final(&md5, decrypt);

  29.         for (i = 0; i < 36; i++)
  30.         {
  31.                 printf("%02x", decrypt[i]);
  32.         }
  33.         putchar('\n');

  34.         return 0;
  35. }
复制代码

最佳答案
2021-5-28 20:38:52
      Linux 下默认含有 OpenSSL 库,所以,编程中可以直接使用密码学的很多函数,其中就包括 md5。在 Windows 的 gcc 实现中,默认是不带 OpenSSL 库的,如果要用,你得自己下载源码,并自行编译、安装。

dev c++软件

dev c++软件

最佳答案

查看完整内容

Linux 下默认含有 OpenSSL 库,所以,编程中可以直接使用密码学的很多函数,其中就包括 md5。在 Windows 的 gcc 实现中,默认是不带 OpenSSL 库的,如果要用,你得自己下载源码,并自行编译、安装。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2021-5-28 20:38:52 | 显示全部楼层    本楼为最佳答案   
      Linux 下默认含有 OpenSSL 库,所以,编程中可以直接使用密码学的很多函数,其中就包括 md5。在 Windows 的 gcc 实现中,默认是不带 OpenSSL 库的,如果要用,你得自己下载源码,并自行编译、安装。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2021-5-28 21:49:06 | 显示全部楼层
无法打开包括文件: “md5.h”: No such file or directory  
应该没这个头文件吧
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2021-5-29 09:09:53 From FishC Mobile | 显示全部楼层
你需要把md5.h文件放到一个目录下
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2021-5-29 21:26:11 | 显示全部楼层
Minecraft程序猿 发表于 2021-5-29 09:09
你需要把md5.h文件放到一个目录下

是放在一个目录下的
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2021-5-29 21:41:21 | 显示全部楼层
本帖最后由 rt3 于 2021-5-30 07:47 编辑

你的md5.h和md5.c的内容呢
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2021-5-29 22:49:05 From FishC Mobile | 显示全部楼层
qiu064987 发表于 2021-5-29 21:26
是放在一个目录下的

是不是一些东西没定义,在主程序下写些函数原型试试
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2021-5-31 14:48:14 | 显示全部楼层
应该不是,试了下linxu,Ubuntu下这些可以编译成功
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2021-6-1 20:50:55 | 显示全部楼层
Linux下可以编译成功可能是因为系统中的md5.h有这些函数的声明和所需库文件,如图所示是我的系统的其中一个md5.h的内容
1.jpg

但在你的Windows OS上,编译器没有找到这些东西,所以没有编译成功
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2021-6-6 18:29:05 From FishC Mobile | 显示全部楼层
rt3 发表于 2021-6-1 20:50
Linux下可以编译成功可能是因为系统中的md5.h有这些函数的声明和所需库文件,如图所示是我的系统的其中一个 ...

题外话,为什么要用图形gvim呢,用命令行的vim不好吗
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2021-6-6 21:40:50 | 显示全部楼层
我这边没有任何问题,不清楚你是怎么操作的
1.png
2.png
3.png
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2021-6-6 21:54:48 | 显示全部楼层
人造人 发表于 2021-6-6 21:40
我这边没有任何问题,不清楚你是怎么操作的

是哪里少了什么声明还是什么啊,百度搜了要在工具编译选项里面加东西

百度说下面那一行要加代码就有用,试过没用

百度说下面那一行要加代码就有用,试过没用
QQ截图20210606214837.png
QQ截图20210606214901.png
QQ截图20210606214916.png
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2021-6-6 22:01:09 | 显示全部楼层

这个错误说明你创建的是窗口程序,应该创建控制台应用程序
1.png
2.png

编译选项我没有改,用的默认选项


小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2021-6-7 14:19:52 | 显示全部楼层
本帖最后由 rt3 于 2021-6-7 14:36 编辑
Minecraft程序猿 发表于 2021-6-6 18:29
题外话,为什么要用图形gvim呢,用命令行的vim不好吗


我记得命令行vim的显示会受到某些进程的干扰,而且我也不懂怎么排查解决
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2021-6-8 12:00:58 From FishC Mobile | 显示全部楼层
rt3 发表于 2021-6-7 14:19
我记得命令行vim的显示会受到某些进程的干扰,而且我也不懂怎么排查解决

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-7-12 22:12

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表