注册 登录
编程论坛 VFP论坛

求助广大网友,看看XP调用该DLL是否正常。。。。

iswith 发布于 2024-12-24 13:52, 478 次点击
Clear

Set Default To e:\GoTest

DECLARE long Sum IN test.dll long,long
?Sum(1,2)


DECLARE string ProcessString IN test.dll string
?ProcessString ("world")

DECLARE long ProcessString IN test.dll string
?Sys(2600,ProcessString ("world") , 12)

DECLARE long ProcessStringLen IN test.dll string
?ProcessStringLen("world")

DECLARE string AESDecrypt IN test.dll string,string
?AESDecrypt("world","myverystrongpasswordo32bitlength")

DECLARE string GenerateRSAKeyPair IN test.dll long
Local lcRSAString
m.lcRSAString = GenerateRSAKeyPair( 1024 )
PrivateKey = Getwordnum( m.lcRSAString , 1 , Chr(13) )
?PrivateKey

PublicKey  = Getwordnum( m.lcRSAString , 2 , Chr(13) )
?PublicKey  


只有本站会员才能查看附件,请 登录


[此贴子已经被作者于2024-12-24 21:35编辑过]

19 回复
#2
吹水佬2024-12-24 14:34
声明中与vfp的sum()有无冲突
#3
iswith2024-12-24 14:47
暂时不考虑那么多,如果有冲突声明AS掉,这个主要测试在全平台上是否正常,包括移动平台。。。
#4
yiyanxiyin2024-12-24 14:56
请使用虚拟机建立测试环境
#5
wcx_cc2024-12-24 15:08
无任何环境设置,直接调用语句:得出:
3  
Hello, world   
Hello, world
5
8FGqeF5YJ6cLLXw9itFxYmbWfG8v

[此贴子已经被作者于2024-12-24 15:23编辑过]

#6
iswith2024-12-24 15:35
是XP和win98,win10,win11,帮忙测试的最终送一份全平台加密库!
#7
iswith2024-12-24 21:17
以下是引用wcx_cc在2024-12-24 15:08:00的发言:

无任何环境设置,直接调用语句:得出:
3  
Hello, world   
Hello, world
5
8FGqeF5YJ6cLLXw9itFxYmbWfG8v

说出你的系统平台。。。。
#8
凝聚双眼2024-12-25 10:44
只有本站会员才能查看附件,请 登录
只有本站会员才能查看附件,请 登录
只有本站会员才能查看附件,请 登录
只有本站会员才能查看附件,请 登录
只有本站会员才能查看附件,请 登录
#9
凝聚双眼2024-12-25 10:46
WinXP-Win2003-Win7-Win10Home-Win10Lstc,均为实机测试,见楼上图,希望可以帮助到楼主,谢谢。
#10
凝聚双眼2024-12-25 10:51
目测,WinXP-Win2003下,crypto/aes 这儿有点问题,显示crypto/aes: 无效密钥大小33
#11
iswith2024-12-25 11:08
看样子真编译,真的可以全平台!XP、2003 应该没有核心库,最近在研究这个AOT,搞定了,会发送一份给你免费使用!无任何限制。。。。到时候你注意查收你的消息,这个DLL有一个特别神奇的功能就是超轻量级别的高效并发线程应用,因没有处理好内存泄露以及线程回收,所以就再等等。。。。。

[此贴子已经被作者于2024-12-25 12:17编辑过]

#12
凝聚双眼2024-12-25 13:06
回复 11楼 iswith
静候佳音,谢过大佬。
#13
kangss2024-12-25 15:14
补充2个server系统的测试:都正常
只有本站会员才能查看附件,请 登录

只有本站会员才能查看附件,请 登录
#14
wcx_cc2024-12-25 22:13
5楼测试的结果,window 10 版本,测试多次无异常
只有本站会员才能查看附件,请 登录


[此贴子已经被作者于2024-12-25 22:16编辑过]

#15
iswith2024-12-25 22:59
如果执行完后执行clear all 或clear dlls 这个DLL有几个线程在运算GC回收上存在冲突,会把你的VFP Kill掉!原因就是GC,DLL很多人会写,但能把GC写好的,不泄露的没几个人。
#16
iswith2025-01-04 10:38
请方大网友再次测试该函数架框是否可以在XP上正常运行。。。。。
Clear

Set Default To e:\GoTest

Declare string ProcessString IN test.dll string
?ProcessString ("world")

Declare long ProcessString IN test.dll string
?Sys(2600,ProcessString ("world") , 12)

Declare long Sum IN test.dll long,long
?Sum(1,2)

Declare long ProcessStringLen In test.dll string
?ProcessStringLen("world")



Declare string AesCBCEncrypt In test.dll string     EncryptStr;
                                        ,string     Key          ;
                                        ,string @     ErrorMsg

Clear
Local lcAesEncryptStr

m.lcAesEncryptStr = "Hello, AES CBC Pkcs7"
?"AES 原始明文:" + m.lcAesEncryptStr

Local lcAesKey           ;
    , lcAESEncryptStr ;
    , lcErrorMsg
   
m.lcErrorMsg      = Space(1024)
m.lcAesKey           = "myverystrongpasswordo32bitlength"
m.lcAESEncryptStr = AesCBCEncrypt( m.lcAesEncryptStr , m.lcAesKey , @lcErrorMsg )
If !Empty( m.lcErrorMsg )
   ?"错误:"
   ??m.lcErrorMsg
Else  
    ?"Pkcs7Padding 填充 密文:"
    ??m.lcAESEncryptStr
Endif

?Chr(13)


Declare string GenerateRSAKey IN test.dll long
Local lcRSAString
m.lcRSAString = GenerateRSAKey( 1024 )
PrivateKey = Getwordnum( m.lcRSAString , 1 , Chr(13) )
?PrivateKey

PublicKey  = Getwordnum( m.lcRSAString , 2 , Chr(13) )
?PublicKey  

*!*    Clear Dlls
*!*    Clear all

只有本站会员才能查看附件,请 登录
#17
kangss2025-01-04 16:43
回复 16楼 iswith
只有本站会员才能查看附件,请 登录

连续点击10次感叹号:正常

如果最后2行一起运行:
Clear Dlls
Clear all
有时候运行几十次,比如2、30次、7、80次,小狐狸会自动关闭

[此贴子已经被作者于2025-1-4 16:51编辑过]

#18
iswith2025-01-04 21:16
Clear

Set Default To e:\GoTest

Declare string ProcessString IN test.dll string
?ProcessString ("world")

Declare long ProcessString IN test.dll string
?Sys(2600,ProcessString ("world") , 12)

Declare long Sum IN test.dll long,long
?Sum(1,2)

Declare long ProcessStringLen In test.dll string
?ProcessStringLen("world")


*关于AES加密解可参照:https://
 *PaddingMode
 #Define None                0        && NoPadding
 #Define PKCS7                1        && PKCS7        暂时只支持这个
 #Define Zeros                2        && Zeros
 #Define ANSIX923            3        && ANSIX923
 #Define ISO10126            4        && ISO10126

*--加密
Declare string AesCBCEncrypt In test.dll string     Str              ;
                                        ,string     Key              ;
                                        ,string     Iv            ;
                                        ,string @     ErrorMsg
*--解密
Declare string AesCBCDecrypt In test.dll string     EncryptStr    ;
                                        ,string     Key              ;
                                        ,string     Iv            ;
                                        ,string @     ErrorMsg
*--获取随机Iv向量
Declare string GenerateIV      In test.dll string @     ErrorMsg

Clear
Local lcStr ;
    , lcIv

*--注意中文时要转成UTF8
m.lcStr = Strconv( "test VFP AES加解密" , 9 )
?"明文:" + Strconv( m.lcStr , 11 )

Local lcAesKey           ;
    , lcAESEncryptStr ;
    , lcErrorMsg
   
m.lcErrorMsg      = Space(256)
m.lcAesKey           = "myverystrongpasswordo32bitlength"
?"密匙 文本:"
??m.lcAesKey

?"密匙 Hex:"
??Strconv( m.lcAesKey , 15 )


*--向量以动态生成
*m.lcIv            = GenerateIV( @lcErrorMsg )
*--以cKey 的16字节开头为固定的向量
m.lcIv            = Left( m.lcAesKey  , 16 )
?"IV 文本:"
??m.lcIv

?"IV Hex:"
??Strconv( m.lcIv , 15 )

??"        字节数:" + Transform( Len( m.lcIv )  )


m.lcAESEncryptStr = AesCBCEncrypt( m.lcStr , m.lcAesKey , m.lcIv , @lcErrorMsg )
If !Empty( m.lcErrorMsg )
   ?"错误:"
   ??m.lcErrorMsg
Else  
    ?"密文:"
    _cliptext = m.lcAESEncryptStr &&复制以便在lzltool上验证
    ??m.lcAESEncryptStr
Endif

m.lcErrorMsg      = Space(256)
Local lcDecryptStr
m.lcDecryptStr = AesCBCDecrypt ( m.lcAesEncryptStr , m.lcAesKey , m.lcIv, @lcErrorMsg )
If !Empty( m.lcErrorMsg )
   ?"错误:"
   ??m.lcErrorMsg
Else  
    ?"解密:"
    ??StrConv( m.lcDecryptStr , 11 )
Endif

?Chr(13)


Declare string GenerateRSAKey IN test.dll long
Local lcRSAString
m.lcRSAString = GenerateRSAKey( 256 )
PrivateKey = Getwordnum( m.lcRSAString , 1 , Chr(13) )
?PrivateKey

PublicKey  = Getwordnum( m.lcRSAString , 2 , Chr(13) )
?PublicKey  

*!*    Clear Dlls
*!*    Clear all
#19
schtg2025-01-05 09:21
测试正常!
只有本站会员才能查看附件,请 登录
#20
iswith2025-01-05 13:26
测试过的同学请入群 262988434 ,准备发布第一个包,该群任何DLL组件包不收任何费用也无任何限制。

[此贴子已经被作者于2025-1-5 13:30编辑过]

1