Mac OSX에서 Mamp 서버를 사용하고 있습니다. 클라이언트 측 쿠키에 대한 프로젝트에서 암호화를 구현하려고합니다. 나는 경고 얻고mcrypt_module_open() 경고!
경고 : mcrypt_module_open() 모듈 오픈 function.mcrypt] : 수 열려 있지 암호화 모듈
내가 php.ini 파일에서 확인하고 세미콜론에서이없는 mcrypt 확장의 앞. 누군가가이 문제를 도울 수 있습니까? 사전
Mac OSX에서 Mamp 서버를 사용하고 있습니다. 클라이언트 측 쿠키에 대한 프로젝트에서 암호화를 구현하려고합니다. 나는 경고 얻고mcrypt_module_open() 경고!
경고 : mcrypt_module_open() 모듈 오픈 function.mcrypt] : 수 열려 있지 암호화 모듈
내가 php.ini 파일에서 확인하고 세미콜론에서이없는 mcrypt 확장의 앞. 누군가가이 문제를 도울 수 있습니까? 사전
Mcrypt 라이브러리 모듈은 php.ini 파일에 설정되어있는
덕분에, 그렇지 않으면 당신은 선 Call to undefined function
함께 오류 메시지가 표시됩니다.
요청 된 암호 방법을 사용할 수 없다는 의미입니다. 오타가 있거나 암호 중 하나가 mcrypt.so
버전으로 컴파일되지 않았습니다.
mcrypt_module_open('rijndael-256', '', 'ofb', ''); // works
mcrypt_module_open('wrong', '', '', ''); // generates your error
manual page
과 추가 매개 변수는 시스템의 libmcrypt 공유 모듈 자체에 의존 수 있음을 나타냅니다. 따라서 다른 버전을 검색하고 싶을 수도 있습니다. MAMP 업데이트를 사용해 보거나 PHP 배포판에 존재하는 pro 버전을 사용하십시오.
CFB 모드에서 복어 알고리즘을 사용하고 있습니다.
static $cipher = 'blowfish';
static $mode = 'cfb';
static $key = '$pxaWyXY67UIq*i&mNlFswBzyJkL7#1N';
내가 알고리즘을 호출에 사용되는 명령은
mcrypt_module_open($cipher, '', $mode, '');
내가 다른 알고리즘을 시도하고 그 중 하나가 작동하는지 확인 것입니다.
나는 rijndael-256을 사용해 보았습니다. 이것조차도 작동하지 않았습니다. 프로 Mamp에 오면, 나는 사기에 자유로운 판을 선호 할텐데. – user525146
phpinfo 페이지를 확인했는데 페이지에 mcrypt가 활성화되어있는 것으로 나타났습니다. 나는 구글에서 어떤 해결책도 보지 못한다. – user525146
@mario : 답장을 보내 주셔서 감사합니다. 이것은 암호화를위한 코드입니다.
class Cookie {
private $created;
private $userid;
private $version;
// mcrypt handle
private $td;
// mcrypt information
static $cipher = 'rijndael-256';
static $mode = 'ofb';
static $key = '$pxaWyXY67UIq*i&mNlFswBzyJkL7#1N';
// Cookie format information
static $cookiename = 'USERAUTH';
static $myversion = '1';
// When the cookie expires
static $expiration = '600';
// When to reissue the cookie
static $warning = '300';
static $glue = '|';
public function __construct($userid = false) {
$this->td = mcrypt_module_open($cipher, '', $mode, '');
if($this->userid) {
$this->userid = $userid;
} else {
if(array_key_exists(self::$cookiename, $_COOKIE)) {
$buffer = $this->_unpackage($_COOKIE[self::$cookiename]);
} else {
throw new AuthException("No Cookie");
}
}
}
public function _encrypt($plaintext) {
//$td = mcrypt_module_open (self::$cipher, '', self::$mode, '');
$iv = mcrypt_create_iv (mcrypt_enc_get_iv_size ($td), MYCRYPT_RAND);
mcrypt_generic_init ($td, $plaintext);
$crypttext = mcrypt_generic($td, $plaintext);
mcrypt_generic_deinit ($td);
return $iv.$crypttext;
}
public function _decrypt($crypttext) {
//$td = mcrypt_module_open (self::$cipher, '', self::$mode, '');
$ivsize = mcrypt_enc_get_iv_size ($td);
$iv = substr ($crypt, 0, $ivsize);
$crypttext = substr ($crypttext, $ivsize);
$plaintext = "";
if($iv) {
mcrypt_generic_init($td, self::$key, $iv);
$plaintext = mdecrypt_generic($td, $crypttext);
mcrypt_generic_deinit ($td);
}
return $plaintext;
}
또한 조지 Schlassnagles "고급 PHP 프로그래밍"(페이지 334ff)에서이 샘플을 사용하고 있습니다. 이 코드에는 몇 가지 실수가 포함되어 있습니다. 정적 변수를 참조 할 때 self :: $ var로 호출해야한다고 생각합니다.
이 하나의 작업을해야합니다 :
mcrypt_module_open(self::$cipher, '', self::$mode, '');
주와 같은 좀 더 실수가 있음 :
$ivsize = mcrypt_get_iv_size(self::$cypher, self::$mode);
을해야한다,이 문제는 Mcrypt 라이브러리에 사용 가능한 알고리즘이 없을 것으로 발생합니다.
해당 플래그없이 libmcrypt를 다시 컴파일하면 작동합니다. PHP 나 ext/mcrypt 모듈을 다시 빌드 할 필요조차 없습니다.
정확한 문제가 있습니다. (PHP 5.5 Solaris10/Sparc)
문제를 해결하는 데 도움을 주시겠습니까? 나는 그 경고를 없애고 그것을 작동시키는 단서가 없다. – user525146
관련 코드 부분을 표시하지 않으면 모든 사람이 추측 할 수 있습니다. – mario