Delphi 如何使用BIGNUM';来自Lazarus中openSSL模块的

Delphi 如何使用BIGNUM';来自Lazarus中openSSL模块的,delphi,openssl,pascal,lazarus,bignum,Delphi,Openssl,Pascal,Lazarus,Bignum,背景:我正在开发一个加密应用程序,我用Objective C编写了这个应用程序,现在我想用pascal重写它,使它在windows上运行。我使用pascal,因为它是我已经知道的语言,lazarus是一个免费的IDE 问题: 如何使用lazarus中openSSL的BigNum模块,我下载了以下单元: 我把它放进去了 使用openssl 但是当我尝试声明一个BIGNUM时 procedure Tform3.Button1Click(Sender: TObject); var bits:integ

背景:我正在开发一个加密应用程序,我用Objective C编写了这个应用程序,现在我想用pascal重写它,使它在windows上运行。我使用pascal,因为它是我已经知道的语言,lazarus是一个免费的IDE

问题: 如何使用lazarus中openSSL的BigNum模块,我下载了以下单元:

我把它放进去了
使用openssl

但是当我尝试声明一个BIGNUM时

procedure Tform3.Button1Click(Sender: TObject);
var bits:integer;
    p:BIGNUM;
begin
   bits:=512;

   p:=BN_new();
   BN_generate_prime(p, bits, FALSE, NULL, NULL, NULL, NULL);

end;  
我刚刚得到一个错误:错误:找不到标识符“BIGNUM”


如何使用BigNum模块和BN_generate prime(模块)?

您使用的单元是三个dll的导入单元,其中一个是libeay32.dll。但不幸的是,它没有完全从libeay32.dll导入所有函数。例如,它省略了
BIGNUM
部分,即您正在查找的内容


也许您可以找到一个更好的导入单元,比如这个名为的单元,它似乎拥有所有的
BN\uuu
函数,或者您可以从获取标题并将缺少的函数添加到openssl.pas。这不是微不足道的,但也不是不可撤销的。我会选择现成的翻译单位。看起来不错。您可能还需要一些东西。

您链接到的代码不包括名为
BIGNUM
的类型。有一个叫做
PBIGNUM
。没有函数
BN_new
,也没有函数
BN_generate prime
。由于您自己拥有源代码,因此可以简单地使用IDE的查找功能(或任何文本编辑器)谢谢你回答了我问题的第一部分,但我仍然找不到使用BN_generate_prime或同等工具的方法。你为什么不在windows上用mingw编译你的objective C代码:@David:objective-C的许多好东西只在苹果平台上可用。我怀疑它们是否能在MingW的GNU Obj-C编译器中找到。@Rudy加密代码可能很好。该单元生成此错误:“libeay32.pas(275,5)错误:编译时表达式:需要字符串,但在第275行的“COMPILERVERSION>=20”处得到整数:“{$IF COMPILERVERSION>=20}”,这是因为您使用的是FreePascal而不是delphi。只要去掉足够的单元来调用你需要的两个函数就行了。@Tawfikh:也许这行可以简单地注释掉。还可以注释掉属于它的$IFEND。如果它测试Delphi特定的条件(比如版本),那么最好将它放在{$ifndeffpc}下。不要忘记启用Delphi模式too@Marco:当然可以,但前提是该装置的用户确实知道Delphi和FPC之间的差异以及应如何遇到它们。