我正在尝试使用Security :: encrypt加密cakephp 3.5中的一些数据。
我做了一个测试:
$key = '111111111111111111111111111111111';
$enc = Security::encrypt('123', $key);
$dec = Security::decrypt($enc, $key);
Log::write(LOG_DEBUG, "Encrypt $key: $enc");
Log::write(LOG_DEBUG, "Decrypt $key: $dec");
在我的日志中,我得到:
Encrypt 111111111111111111111111111111111: c4f3fd8f937afe66a6f211a4333c97be06700655c8f591f9b5bf3c85489a3c0a~ΊCdΔA€Νίύι_Yτ΅\i©EpcΛ*Kβ
Decrypt 111111111111111111111111111111111: 123
加密值不是ANSI字符串? Decrypt正确完成但是如果我将这些数据保存到数据库然后解密它就无法给我正确的原始数据。问题是没有正确的加密密钥保存到数据库中。 我的专栏(在mysql中)在utf8_unicode_ci中。我做错了什么?
由于
答案 0 :(得分:1)
如果要按存储数据,则需要使用CakePHP支持的二进制类型列,对于MySQL,BINARY
和BLOB
& #39; s(读取此类数据时,CakePHP将为您提供data:
stream wrapper资源句柄。
如果您必须将其存储在非二进制列中,那么您需要相应地转换数据,例如使用Base64。
您可能还想查看可以透明地执行加密/解密/转换的自定义数据库类型。
另见