Sum*_*mer 0 php encryption variables function
我从Internet获得了一段代码,使用TripleDES加密我的数据.
$key = "ThisIsTheKey"; // 24 bit Key
$iv = "fYfhHeDm"; // 8 bit IV
$bit_check = 8; // bit amount for diff algor.
//function to encrypt
function encrypt($text) {
global $key,$iv,$bit_check;
$text_num = str_split($text, $bit_check);
$text_num = $bit_check - strlen($text_num[count($text_num) - 1]);
for ($i = 0; $i < $text_num; $i++) {
$text = $text . chr($text_num);
}
$cipher = mcrypt_module_open(MCRYPT_TRIPLEDES, '', 'cbc', '');
mcrypt_generic_init($cipher, $key, $iv);
$decrypted = mcrypt_generic($cipher, $text);
mcrypt_generic_deinit($cipher);
return base64_encode($decrypted);
}
Run Code Online (Sandbox Code Playgroud)
问题是即使我将变量称为全局变量,在顶部(我声明变量)显示变量未使用.当我尝试运行它时,它给出了一个错误.但是,当我在函数内部声明相同的变量时,它可以工作.
Mad*_*iha 10
总的来说,强烈建议不要使用全局变量.当我看着你的功能,我看到它只需$text但是,它实际需要$text,$key,$iv,和$bit_check.
让我们尝试不使用全局变量:
$key = "ThisIsTheKey"; // 24 bit Key
$iv = "fYfhHeDm"; // 8 bit IV
$bit_check = 8; // bit amount for diff algor.
//function to encrypt
function encrypt($text, $key, $iv, $bit_check) {
$text_num = str_split($text, $bit_check);
$text_num = $bit_check - strlen($text_num[count($text_num) - 1]);
for ($i = 0; $i < $text_num; $i++) {
$text = $text . chr($text_num);
}
$cipher = mcrypt_module_open(MCRYPT_TRIPLEDES, '', 'cbc', '');
mcrypt_generic_init($cipher, $key, $iv);
$decrypted = mcrypt_generic($cipher, $text);
mcrypt_generic_deinit($cipher);
return base64_encode($decrypted);
}
Run Code Online (Sandbox Code Playgroud)
并使用它来调用它
encrypt("Hello World!", $key, $iv, $bit_check);
Run Code Online (Sandbox Code Playgroud)
另一种解决方案涉及使用CONSTANTS,假设key,iv和bit_check 在整个执行时间内永远不会改变,您可以将它们定义为常量,并且它们将在整个应用程序中全局可用,并且无法更改.
像这样:
const KEY = "ThisIsTheKey"; // 24 bit Key
const IV = "fYfhHeDm"; // 8 bit IV
const BIT_CHECK = 8; // bit amount for diff algor.
//function to encrypt
function encrypt($text) {
$text_num = str_split($text, BIT_CHECK);
$text_num = BIT_CHECK - strlen($text_num[count($text_num) - 1]);
for ($i = 0; $i < $text_num; $i++) {
$text = $text . chr($text_num);
}
$cipher = mcrypt_module_open(MCRYPT_TRIPLEDES, '', 'cbc', '');
mcrypt_generic_init($cipher, KEY, IV);
$decrypted = mcrypt_generic($cipher, $text);
mcrypt_generic_deinit($cipher);
return base64_encode($decrypted);
}
Run Code Online (Sandbox Code Playgroud)