(PHP 4 >= 4.0.2, PHP 5, PHP 7 < 7.2.0, PECL mcrypt >= 1.0.0)
mcrypt_generic — 加密數(shù)據(jù)
本函數(shù)已自 PHP 7.1.0 起廢棄。強(qiáng)烈建議不要使用本函數(shù)。
$td
, string $data
): string
本函數(shù)用來加密數(shù)據(jù)。
傳入數(shù)據(jù)長度必須是 n * 分組大小,否則需要后補(bǔ) "\0
"。
本函數(shù)返回加密后的數(shù)據(jù)。
注意,根據(jù)數(shù)據(jù)補(bǔ)齊不同,
返回的數(shù)據(jù)可能比輸入的數(shù)據(jù)長度有所增加。
如果你需要把加密后的數(shù)據(jù)保存到數(shù)據(jù)庫, 請確保保存 mcrypt_generic 返回的完整的字符串, 否則將無法正確解密。 如果原始數(shù)據(jù)有 10 個字符,分組大小為 8 (使用 mcrypt_enc_get_block_size() 獲取分組大?。?, 則數(shù)據(jù)庫中至少需要 16 個字符來保存數(shù)據(jù)。 請注意 mdecrypt_generic() 函數(shù)返回的數(shù)據(jù)也會是 16 個字符。 使用 rtrim($str, "\0") 移除字符串末尾的 0 。
如果你在例如 MySQL 這樣的數(shù)據(jù)庫中存儲數(shù)據(jù), 請注意 varchar 類型的字段會在插入數(shù)據(jù)時自動移除字符串末尾的“空格”。 由于加密后的數(shù)據(jù)可能是以空格(ASCII 32)結(jié)尾, 這種特性會導(dǎo)致數(shù)據(jù)損壞。 請使用 tinyblob/tinytext(或 larger)字段來存儲加密數(shù)據(jù)。
td
加密描述符。
在調(diào)用本函數(shù)之前, 請使用 mcrypt_generic_init() 函數(shù)初始化加密句柄。 在加密完成之后, 需要調(diào)用 mcrypt_generic_deinit() 函數(shù)進(jìn)行必要的清理工作。 請參見 mcrypt_module_open() 。
data
要加密的數(shù)據(jù)。
返回加密后的數(shù)據(jù)。