可以加密数据或对象数组并将其作为 hash 序列化字符串返回的最佳加密/解密类/函数是什么?
然后,在解密时,可以将序列化字符串解密回其包含对象或数组值的原始值形式。
由于
答案 0 :(得分:3)
前言:您似乎有一个概念,即散列某些数据与加密数据相同。哈希是 NOT 加密,无法通过密码或密钥文件进行反转,如加密可以。
PHP附带了几个散列协议,如md5
(md5_file
),SHA1
(SHA1_file
)。这一切都取决于你正在使用这个哈希做什么,以及你最初的哈希值。
答案 1 :(得分:2)
mcrypt库有很多功能可以用尽可能多的方式进行加密。以下是使用AES的示例:
$secretKey = 'the longer, the better';
$originalString = 'some text here';
$iv_size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_CBC);
$iv = mcrypt_create_iv($iv_size, MCRYPT_RAND);
$crypttext = mcrypt_encrypt(MCRYPT_RIJNDAEL_256, $secretKey, $originalString,
MCRYPT_MODE_CBC, $iv);
printf( "Original string: %s\n", $originalString );
// Returns "Original string: some text here"
printf( "Encrypted string: %s\n", $crypttext );
// Returns "Encrypted string: <gibberish>"
$decrypttext = mcrypt_decrypt(MCRYPT_RIJNDAEL_256, $secretKey, $crypttext,
MCRYPT_MODE_CBC, $iv);
// Drop nulls from end of string
$decrypttext = rtrim($decrypttext, "\0");
printf( "Decrypted string: %s\n", $decrypttext );
// Returns "Decrypted string: some text here"