打印
[实用程序源码及工具软件]

PHP语言调用动态链接库DLL例程源码(独家在21ic发表)

[复制链接]
109|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
hotpower|  楼主 | 2023-9-19 14:41 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 hotpower 于 2023-9-20 09:42 编辑
<?php
$PEA256Dll = FFI::cdef(<<<CTYPE
typedef unsigned char uint8_t;
typedef unsigned int uint32_t;
typedef void* HANDLE;
bool PEA256Init();
HANDLE PEA256Open();
void PEA256Close(HANDLE handle);
uint32_t PEA256UserKey(HANDLE handle, const char* keystring, const char* keybuffer,  const char* filename);//设置加密主密钥
uint32_t PEA256EncryptUserKey(HANDLE handle, const char* keystring, const char* keybuffer,  const char* filename);//设置加密主密钥
uint32_t PEA256DecryptUserKey(HANDLE handle, const char* keystring, const char* keybuffer,  const char* filename);//设置解密主密钥
uint32_t PEA256EncryptBytes(HANDLE handle, uint8_t* bytes, uint32_t length, uint32_t subkey);//句柄流加密
uint32_t PEA256DecryptBytes(HANDLE handle, uint8_t* bytes, uint32_t length, uint32_t subkey);//句柄流解密
uint32_t PEA256EncryptBytesEx(HANDLE handle, uint8_t* inbytes, uint8_t* outbytes, uint32_t length, uint32_t subkey);//句柄流加密
uint32_t PEA256DecryptBytesEx(HANDLE handle, uint8_t* inbytes, uint8_t* outbytes, uint32_t length, uint32_t subkey);//句柄流解密
uint32_t PEA256EncryptArrayEx(HANDLE handle, uint8_t* inbytes, uint8_t* outbytes, uint32_t index, uint32_t length, uint32_t subkey);//扩展句柄数组加密
uint32_t PEA256DecryptArrayEx(HANDLE handle, uint8_t* inbytes, uint8_t* outbytes, uint32_t index, uint32_t length, uint32_t subkey);//扩展句柄数组解密
uint32_t PEA256EncryptBufferEx(HANDLE handle, uint8_t* inbytes, uint32_t in_index, uint8_t* outbytes, uint32_t out_index, uint32_t length, uint32_t subkey);//扩展句柄数组加密
uint32_t PEA256DecryptBufferEx(HANDLE handle, uint8_t* inbytes, uint32_t in_index, uint8_t* outbytes, uint32_t out_index, uint32_t length, uint32_t subkey);//扩展句柄数组解密
bool PEA256Test();
int PEA256Error();
uint32_t PEA256Version();
CTYPE, 'D:\\libpea256x64\\libpea256x64.dll');
if($PEA256Dll->PEA256Init()){
    $PEA256Dll->PEA256Test();
    echo(strtoupper(dechex($PEA256Dll->PEA256Version())) . "\n");
    $handle = $PEA256Dll->PEA256Open();
    if($handle){
        $Array = FFI::new("uint8_t[4]");
        $ArrayEncrypt = FFI::new("uint8_t[4]");
        $ArrayDecrypt = FFI::new("uint8_t[4]");
        for($i = 0; $i < 4; $i++){
            $Array[$i] = $i;
            $ArrayEncrypt[$i] = $i;
        }
        $subkey = $PEA256Dll->PEA256EncryptUserKey($handle, "123", "", "");
        echo("subkey0 = 0x" . strtoupper(dechex($subkey)) . "\n");
        $PEA256Dll->PEA256EncryptBytes($handle, $Array, 4, $subkey);
        foreach ($Array as $value){
            echo(" " . strtoupper(dechex($value)));
        }
        echo("\n");
        $subkey = $PEA256Dll->PEA256DecryptUserKey($handle, "123", "", "");
        echo("subkey0 = 0x" . strtoupper(dechex($subkey)) . "\n");
        $PEA256Dll->PEA256DecryptBytes($handle, $Array, 4, $subkey);
        foreach ($Array as $value){
            echo(" " . strtoupper(dechex($value)));
        }
        echo("\n");
        $subkey = $PEA256Dll->PEA256EncryptUserKey($handle, "", "0123456789ABCDEF0123456789ABCDEF", "");
        echo("subkey1 = 0x" . strtoupper(dechex($subkey)) . "\n");
        $PEA256Dll->PEA256EncryptBytesEx($handle, $ArrayEncrypt, $ArrayDecrypt, 4, $subkey);
        foreach ($ArrayDecrypt as $value){
            echo(" " . strtoupper(dechex($value)));
        }
        echo("\n");
        $subkey = $PEA256Dll->PEA256DecryptUserKey($handle, "", "0123456789ABCDEF0123456789ABCDEF", "");
        echo("subkey1 = 0x" . strtoupper(dechex($subkey)) . "\n");
        $PEA256Dll->PEA256DecryptBytesEx($handle, $ArrayDecrypt, $ArrayEncrypt, 4, $subkey);
        foreach ($ArrayEncrypt as $value){
            echo(" " . strtoupper(dechex($value)));
        }
        echo("\n");
        $subkey = $PEA256Dll->PEA256EncryptUserKey($handle, "", "", "123.PEA.KEY");
        echo("subkey2 = 0x" . strtoupper(dechex($subkey)) . "\n");
        $PEA256Dll->PEA256EncryptArrayEx($handle, $ArrayEncrypt, $ArrayDecrypt, 0, 4, $subkey);
        foreach ($ArrayDecrypt as $value){
            echo(" " . strtoupper(dechex($value)));
        }
        echo("\n");
        $subkey = $PEA256Dll->PEA256DecryptUserKey($handle, "", "", "123.PEA.KEY");
        echo("subkey2 = 0x" . strtoupper(dechex($subkey)) . "\n");
        $PEA256Dll->PEA256DecryptArrayEx($handle, $ArrayDecrypt, $ArrayEncrypt, 0, 4, $subkey);
        foreach ($ArrayEncrypt as $value){
            echo(" " . strtoupper(dechex($value)));
        }
        echo("\n");
        $subkey = $PEA256Dll->PEA256EncryptUserKey($handle, "", "", "D:\\libpea256x64\\libpea256x64.dll");
        echo("subkey3 = 0x" . strtoupper(dechex($subkey)) . "\n");
        $PEA256Dll->PEA256EncryptBufferEx($handle, $ArrayEncrypt, 0, $ArrayDecrypt, 0, 4, $subkey);
        foreach ($ArrayDecrypt as $value){
            echo(" " . strtoupper(dechex($value)));
        }
        echo("\n");
        $subkey = $PEA256Dll->PEA256DecryptUserKey($handle, "", "", "D:\\libpea256x64\\libpea256x64.dll");
        echo("subkey3 = 0x" . strtoupper(dechex($subkey)) . "\n");
        $PEA256Dll->PEA256DecryptBufferEx($handle, $ArrayDecrypt, 0, $ArrayEncrypt, 0, 4, $subkey);
        foreach ($ArrayEncrypt as $value){
            echo(" " . strtoupper(dechex($value)));
        }
        echo("\n");
        $PEA256Dll->PEA256Close($handle);
    } else {
        echo("PEA256Open()失败!!!");
    }
    $PEA256Dll->PEA256Error();
} else {
    echo("PEA256Init()失败!!!");
}
?>


使用特权

评论回复

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:[url=http://www.21ic.com/tools/HotWC3_V1.23.html]

1538

主题

21697

帖子

505

粉丝