作者热门文章
- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
当我进行编码时,我有这个随机的“d9b3b2d69bab862a”值。但我无法将其解码回 abcd
。知道怎么做吗?
编码器/解码器运行:
$tokenIs = Application_Model_Login::getEnc("abcd");
echo $tokenIs . "<br/><br/>";
echo Application_Model_Login::getDec(hex2bin($tokenIs)); //hints: rawurldecode(..) works
采埃孚车型:
class Application_Model_Login
{
private $key = "thisisakeytolock";
private $vector= "myvector";
public static function getEnc($input)
{
$filter = new Zend_Filter_Encrypt(array('adapter' => 'mcrypt', 'key' => $key));
$filter->setVector($vector);
$encrypted = $filter->filter($input);
// bin2hex for user use case
return bin2hex($encrypted); //hints: rawurlencode(..) works
}
public static function getDec($input)
{
$filter = new Zend_Filter_Decrypt(array('adapter' => 'mcrypt', 'key' => $key));
$filter->setVector($this->vector);
$encrypted = $filter->filter($input);
return $encrypted;
}
}
最佳答案
如果您想使用 bin2hex 对二进制数据进行“编码”,以便通过 http/url 轻松传输它,您可以执行以下操作将其反转回二进制:
$encoded = bin2hex($some_binary);
$decoded = pack('H*', $encoded);
您的类(class)的其他小问题是对 $key
和 $vector
的引用。由于这两个方法都是静态的,它们不能访问 $this
并且 $key
和 $vector
单独是未定义的。
以下代码应该适合您:
class Application_Model_Login
{
const ENC_KEY = "thisisakeytolock";
const VECTOR = "myvector";
public static function getEnc($input)
{
$filter = new Zend_Filter_Encrypt(array('adapter' => 'mcrypt', 'key' => self::ENC_KEY));
$filter->setVector(self::VECTOR);
$encrypted = $filter->filter($input);
return bin2hex($encrypted); //hints: rawurlencode(..) works
return $encrypted;
}
public static function getDec($input)
{
$filter = new Zend_Filter_Decrypt(array('adapter' => 'mcrypt', 'key' => self::ENC_KEY));
$filter->setVector(self::VECTOR);
$decoded = pack('H*', $input);
$decrypted = $filter->filter($decoded);
return $decrypted;
}
}
或者,您可以使用 base64_encode在您的 getEnc 函数中,在 getDec 函数中使用 base64_decode。 Base64 通常用于表示加密后的二进制数据。
关于php - ZendFramework - 如何使用带 bin2hex 和 hex2bin 的 Zend_Filter 进行加密和解密?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8596420/
如何在重新填充之前禁用 Zend_Form 中的过滤? 最佳答案 您不能禁用它们。 你可以这样做: $filters = $form->getElementFilters(); $form->setE
当我进行编码时,我有这个随机的“d9b3b2d69bab862a”值。但我无法将其解码回 abcd。知道怎么做吗? 编码器/解码器运行: $tokenIs = Application_Model_Lo
我是一名优秀的程序员,十分优秀!