Hi Tyzer !
Hier eine Variante mit AES-256 Bit Verschlüsselung :
AutoIt :
Code
#include <Crypt.au3>
Global $key = "12345678901234567890123456789012"; // 32 byte key --> AES-256
Global $IV = "1234123412341234"
Global $sCrypttext = "730ec7f34d1b060bc6edfa915b8de0ce83878fd8a2deed644aa2d31013e2047dc56f8dcbc727c9da08d097c4171afb691fac6e24f2863b80ffd8c2a04a8cf1c54398b7cd2aef6f7a9029396deb51bb45808c7b1b84cdd09d89dd1945f28108cd91b1e7b1a8dd4281cdb8a35a18d3c29d"
Global $sCleartext = 'Dies ist ein neuer [.Beispieltext], {der} verschlüsselt werden soll - äüö ÄÜÖ ?&%! Pfad = "C:\Test"'
_Crypt_Startup()
$key = _CryptImportKey($CALG_AES_256, $key, 32)
Const $KP_IV = 1
_CryptSetKeyParam($key, $KP_IV, $IV, 0, "str")
; Verschlüsseln :
Global $Encrypt = _Crypt_EncryptData($sCleartext, $key, $CALG_USERKEY)
ConsoleWrite("Encrypted: " & $Encrypt & @LF)
MsgBox(0, 'Verschlüsselter String : ', $Encrypt & @CRLF)
; Entschlüsseln :
Global $Decrypt = _Crypt_DecryptData(Binary('0x' & $sCrypttext), $key, $CALG_USERKEY)
ConsoleWrite("Decrypted: " & BinaryToString($Decrypt) & @LF)
MsgBox(0, 'Entschlüsselter String : ', BinaryToString($Decrypt) & @CRLF)
_Crypt_DestroyKey($key)
_Crypt_Shutdown()
Func _CryptImportKey($CALG, $bKey, $iKeyLength = -1)
If $iKeyLength < 1 Then $iKeyLength = BinaryLen($bKey)
Local $blob = DllStructCreate("align 1;BYTE bType;BYTE bVersion;WORD reserved;dword aiKeyAlg;dword keysize;byte key[" & $iKeyLength & "]")
DllStructSetData($blob, 1, 0x8)
DllStructSetData($blob, 2, 2)
DllStructSetData($blob, 4, $CALG)
DllStructSetData($blob, 5, $iKeyLength)
DllStructSetData($blob, 6, Binary($bKey))
Local $aRet = DllCall(__Crypt_DllHandle(), "bool", "CryptImportKey", "handle", __Crypt_Context(), "ptr", DllStructGetPtr($blob), "dword", DllStructGetSize($blob), "ptr", 0, "dword", 0, "ptr*", 0)
If @error Then Return SetError(2, @error, 0)
Return SetError(Not $aRet[0], 0, $aRet[6])
EndFunc
Func _CryptSetKeyParam($hKey, $iParam, $vValue, $iFlags=0, $sValType=Default)
If Not $sValType Or $sValType = Default Then $sValType = "ptr"
Local $aRet = DllCall(__Crypt_DllHandle(), "bool", "CryptSetKeyParam", "handle", $hKey, "uint", $iParam, $sValType, $vValue, "dword", $iFlags)
If @error Then Return SetError(2, @error, 0)
Return SetError(Not $aRet[0], 0, $aRet[0])
EndFunc
Alles anzeigen
PHP :
PHP
<?php
if (!function_exists('hex2bin')) {
function hex2bin($d) {
return pack("H*" , $d);
}
}
// PHP mit PKCS#5 Style Padding :
// (PKCS#5 : Daten mit AES zu verschlüsseln, die Multi-Byte Blockgröße besitzen)
function pkcs5_Pad($unpaddedString, $blockSize=16) {
$additionalChars = $blockSize - (strlen($unpaddedString) % $blockSize);
return $unpaddedString.str_repeat(chr($additionalChars), $additionalChars);
}
function pkcs5_Unpad($paddedString) {
$additionalChars = ord(substr($paddedString, -1, 1));
return substr($paddedString, 0, -$additionalChars);
}
$key = '12345678901234567890123456789012'; // 32-Byte Schlüssel (--> AES-256)
$iv = '1234123412341234'; // IV wird hier manuell gesetzt
// Verschlüsseln :
$cleartext = 'Dies ist ein neuer [.Beispieltext], {der} verschlüsselt werden soll - äüö ÄÜÖ ?&%! Pfad = "C:\Test"';
echo '<p>' . utf8_encode("unverschlüsselter Text : " . $cleartext) . '</p>'; // nur zur Anzeige
$encrypttext = mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $key, pkcs5_Pad($cleartext), MCRYPT_MODE_CBC, $iv);
echo '<p>' . utf8_encode("verschlüsselter Text : " . bin2hex($encrypttext)) . '</p>'; // nur zur Anzeige
// Entschlüsseln :
$encrypttext2 = '730ec7f34d1b060bc6edfa915b8de0ce83878fd8a2deed644aa2d31013e2047dc56f8dcbc727c9da08d097c4171afb691fac6e24f2863b80ffd8c2a04a8cf1c54398b7cd2aef6f7a9029396deb51bb45808c7b1b84cdd09d89dd1945f28108cd91b1e7b1a8dd4281cdb8a35a18d3c29d';
echo '<p>' . utf8_encode("verschlüsselter Text : " . $encrypttext2) . '</p>'; // nur zur Anzeige
$cleartext2 = mcrypt_decrypt(MCRYPT_RIJNDAEL_128, $key, hex2bin($encrypttext2), MCRYPT_MODE_CBC, $iv);
echo '<p>' . utf8_encode("entschlüsselter Text : " . $cleartext2) . '</p>'; // nur zur Anzeige
?>
Alles anzeigen
EDIT (Nachtrag) :
Tyzer -> Hinweis
mcrypt_encrypt und mcrypt_decrypt sind gültig für PHP-Versionen >= 4.0.2, PHP 5, PHP 7 < 7.2.0
Bei PHP >= 7.2.0 müsste man mit openssl_encrypt() bzw. openssl_decrypt()
arbeiten
Gruß Musashi