首页
社区
课程
招聘
[求助]加密解密三中关于大数库miracl实现RSA的问题
发表于: 2009-10-9 20:51 13349

[求助]加密解密三中关于大数库miracl实现RSA的问题

2009-10-9 20:51
13349
最近看了加密解密三中的密码学一章,对其中的RSA我进行了实验,用下载的光盘里的src编译之后可以得到exe,但是我自己写一个工程,然后使用miracl库,编译器却告诉我error LNK2019: 无法解析的外部符号  我已经在代码中加了#pragma comment( lib,"ms32.lib"),而且把那两个.h和那个.lib放在了文件夹下,为什么会出这种错误呢?????我编译光盘中的src是好使的,但我自己的程序为什么不好使呢??
求解答....

附上部分源码
#include "miracl.h"
#include "mirdef.h"
#pragma comment( lib,"ms32.lib") 
............
............
............
BOOL CGetHardWareIDDlg::Decry()
{
	char * Result = m_Result.GetBuffer();
	char * Code = m_Code.GetBuffer();
	big n,e,c,m;
	miracl *mip=mirsys(100,0);
	mip->IOBASE = 16;
	c=mirvar(0);                                   // MIRACL的大数类型
	n=mirvar(0);
	e=mirvar(0);
	m=mirvar(0);
	cinstr(m,Code);
	cinstr(n,"AD45A7FB2FD39557BF690F3E230ECDB52AA90BBFAD7F21AD490C9B432DBB08FF6D900D9B2F50BEA69D9D5FA364FCF537998CF07ECEFA35F83EE3CB60BB5914ABCAFFB114605B6EF3EF2110C2AC5DCBBEB3417AE3D791CBABF32064B39BCD0318E19538FD4DF41B9AB143CDAB57F6AACC3BD6B7EDD12579FDFCB21D15DA2560ED");  // 初始化模数n   
	cinstr(e,"10001");  // 初始化私钥e
	if (compare(m,n) == -1)
	{
		powmod(m,e,n,c);
		big_to_bytes(0,c,Code,0);
		if (lstrcmp(Result,Code)!=0)
		{
			MessageBox("AAA");
			return TRUE;
		}
		else
			return FALSE;
	}
	else
		return FALSE;

}


附上错误
1>GetHardWareIDDlg.obj : error LNK2019: 无法解析的外部符号 "int __cdecl big_to_bytes(int,struct bigtype *,char *,int)" (?big_to_bytes@@YAHHPAUbigtype@@PADH@Z),该符号在函数 "public: int __thiscall CGetHardWareIDDlg::Decry(void)" (?Decry@CGetHardWareIDDlg@@QAEHXZ) 中被引用
1>GetHardWareIDDlg.obj : error LNK2019: 无法解析的外部符号 "void __cdecl powmod(struct bigtype *,struct bigtype *,struct bigtype *,struct bigtype *)" (?powmod@@YAXPAUbigtype@@000@Z),该符号在函数 "public: int __thiscall CGetHardWareIDDlg::Decry(void)" (?Decry@CGetHardWareIDDlg@@QAEHXZ) 中被引用
1>GetHardWareIDDlg.obj : error LNK2019: 无法解析的外部符号 "int __cdecl compare(struct bigtype *,struct bigtype *)" (?compare@@YAHPAUbigtype@@0@Z),该符号在函数 "public: int __thiscall CGetHardWareIDDlg::Decry(void)" (?Decry@CGetHardWareIDDlg@@QAEHXZ) 中被引用
1>GetHardWareIDDlg.obj : error LNK2019: 无法解析的外部符号 "int __cdecl cinstr(struct bigtype *,char *)" (?cinstr@@YAHPAUbigtype@@PAD@Z),该符号在函数 "public: int __thiscall CGetHardWareIDDlg::Decry(void)" (?Decry@CGetHardWareIDDlg@@QAEHXZ) 中被引用
1>GetHardWareIDDlg.obj : error LNK2019: 无法解析的外部符号 "struct bigtype * __cdecl mirvar(int)" (?mirvar@@YAPAUbigtype@@H@Z),该符号在函数 "public: int __thiscall CGetHardWareIDDlg::Decry(void)" (?Decry@CGetHardWareIDDlg@@QAEHXZ) 中被引用
1>GetHardWareIDDlg.obj : error LNK2019: 无法解析的外部符号 "struct miracl * __cdecl mirsys(int,unsigned int)" (?mirsys@@YAPAUmiracl@@HI@Z),该符号在函数 "public: int __thiscall CGetHardWareIDDlg::Decry(void)" (?Decry@CGetHardWareIDDlg@@QAEHXZ) 中被引用
1>D:\VC\GetHardWareID\Debug\GetHardWareID.exe : fatal error LNK1120: 6 个无法解析的外部命令

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

上传的附件:
收藏
免费 0
支持
分享
最新回复 (7)
雪    币: 68
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
我上传了我的一个测试的程序,也是错误的.希望大家能给指正一下,小弟不甚感激..谢谢
2009-10-9 22:03
0
雪    币: 50161
活跃值: (20625)
能力值: (RANK:350 )
在线值:
发帖
回帖
粉丝
3
C++工程里用了C语言写的lib文件,必需要下面这样包含调用,StdAfx.h加上
extern   "C"   
  {   
      #include "miracl.h"
      #include "mirdef.h"
      #pragma comment( lib, "ms32.lib") 
  }   
#if _DEBUG
  #pragma comment(linker,"/NODEFAULTLIB:LIBC")
#endif


也可以官方下载一个MIRACL原版,并参照说明配置:
http://www.shamus.ie/index.php?mact=News,cntnt01,detail,0&cntnt01articleid=2&cntnt01origid=15&cntnt01returnid=15
2009-10-9 22:53
0
雪    币: 68
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
额...我最新版的下载过了...不好使..郁闷啊...谢谢坛主...
2009-10-9 23:15
0
雪    币: 50161
活跃值: (20625)
能力值: (RANK:350 )
在线值:
发帖
回帖
粉丝
5
补充了一下,参考3楼思路,应能解决。
2009-10-9 23:50
0
雪    币: 68
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
呵呵,谢谢坛主,问题解决了.加上extern "C"之后果然好使..但这是为什么呢?还有,刚开始会有这个错误::1>ms32.lib(mrcore.obj) : error LNK2001: 无法解析的外部符号 __iob,该符号在函数 _mr_berror 中被引用
我百度了一下,在cpp文件头部加上了extern "C" { FILE _iob[3] = {__iob_func()[0], __iob_func()[1], __iob_func()[2]}; }这句话就好使了.这句话还不能加在.h中.不明其原理...

谢谢坛主.呵呵..
2009-10-10 00:14
0
雪    币: 138
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
网上不只是只有解决方法,还有why
2009-10-11 09:33
0
雪    币: 54
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
3楼说得很好。
2009-10-15 17:45
0
游客
登录 | 注册 方可回帖
返回
//