PHP8 mcrypt_generic

2024-03-02 17:00 更新

(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 起廢棄并將自 PHP 7.2.0 起移除。強(qiáng)烈建議不要使用本函數(shù)。

說(shuō)明

mcrypt_generic(resource $td, string $data): string

本函數(shù)用來(lái)加密數(shù)據(jù)。 傳入數(shù)據(jù)長(zhǎng)度必須是 n * 分組大小,否則需要后補(bǔ) "\0"。 本函數(shù)返回加密后的數(shù)據(jù)。 注意,根據(jù)數(shù)據(jù)補(bǔ)齊不同, 返回的數(shù)據(jù)可能比輸入的數(shù)據(jù)長(zhǎng)度有所增加。

如果你需要把加密后的數(shù)據(jù)保存到數(shù)據(jù)庫(kù), 請(qǐng)確保保存 mcrypt_generic 返回的完整的字符串, 否則將無(wú)法正確解密。 如果原始數(shù)據(jù)有 10 個(gè)字符,分組大小為 8 (使用 mcrypt_enc_get_block_size() 獲取分組大小), 則數(shù)據(jù)庫(kù)中至少需要 16 個(gè)字符來(lái)保存數(shù)據(jù)。 請(qǐng)注意 mdecrypt_generic() 函數(shù)返回的數(shù)據(jù)也會(huì)是 16 個(gè)字符。 使用 rtrim($str, "\0") 移除字符串末尾的 0 。

如果你在例如 MySQL 這樣的數(shù)據(jù)庫(kù)中存儲(chǔ)數(shù)據(jù), 請(qǐng)注意 varchar 類(lèi)型的字段會(huì)在插入數(shù)據(jù)時(shí)自動(dòng)移除字符串末尾的“空格”。 由于加密后的數(shù)據(jù)可能是以空格(ASCII 32)結(jié)尾, 這種特性會(huì)導(dǎo)致數(shù)據(jù)損壞。 請(qǐng)使用 tinyblob/tinytext(或 larger)字段來(lái)存儲(chǔ)加密數(shù)據(jù)。

參數(shù) 

td

加密描述符。

在調(diào)用本函數(shù)之前, 請(qǐng)使用 mcrypt_generic_init() 函數(shù)初始化加密句柄。 在加密完成之后, 需要調(diào)用 mcrypt_generic_deinit() 函數(shù)進(jìn)行必要的清理工作。 請(qǐng)參見(jiàn) mcrypt_module_open() 。

data

要加密的數(shù)據(jù)。

返回值 

返回加密后的數(shù)據(jù)。

參見(jiàn) 

  • mdecrypt_generic() - 解密數(shù)據(jù)
  • mcrypt_generic_init() - 初始化加密所需的緩沖區(qū)
  • mcrypt_generic_deinit() - 對(duì)加密模塊進(jìn)行清理工作


以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)