<?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()失败!!!");
}
?>