在php中我想加密和解密數據。我不想使用特殊字符。我只有6-8位數的字母和數字。對於加密和解密,我已經做了這個功能,但有時它不能解密加密的數字,也有它的特殊字符的長度。Php加密,解密沒有特殊字符和數字長度應該是6-8
function random_password($length = 8) {
$password = "";
$possible = "2346789bcdfghjkmnpqrtvwxyzBCDFGHJKLMNPQRTVWXYZ";
$maxlength = strlen($possible);
if ($length > $maxlength) {
$length = $maxlength;
}
$i = 0;
while ($i < $length) {
$char = substr($possible, mt_rand(0, $maxlength-1), 1);
if (!strstr($password, $char)) {
$password .= $char;
$i++;
}
}
return $password;
}
function encrypt($plaintext, $salt) {
$td = mcrypt_module_open('cast-256', '', 'ecb', '');
$iv = mcrypt_create_iv (mcrypt_enc_get_iv_size($td), MCRYPT_RAND);
mcrypt_generic_init($td, $salt, $iv);
$encrypted_data = mcrypt_generic($td, $plaintext);
mcrypt_generic_deinit($td);
mcrypt_module_close($td);
$encoded_64 = base64_encode($encrypted_data);
return trim($encoded_64);
}
function decrypt($crypttext, $salt) {
$decoded_64=base64_decode($crypttext);
$td = mcrypt_module_open('cast-256', '', 'ecb', '');
$iv = mcrypt_create_iv (mcrypt_enc_get_iv_size($td), MCRYPT_RAND);
mcrypt_generic_init($td, $salt, $iv);
$decrypted_data = mdecrypt_generic($td, $decoded_64);
mcrypt_generic_deinit($td);
mcrypt_module_close($td);
return trim($decrypted_data);
}
我認爲在這個問題上的一般建議是**而不是**滾動自己的加密。對不起,我不能比這更有幫助。 –
從頭開始:加密的用例是什麼,它將接受哪些可能的輸入,您想要生成的輸出是什麼以及爲什麼? – deceze
6-8位數字聽起來不太安全。 – apokryfos