PHP加密类问题

PHP加密类问题,php,static,cryptography,Php,Static,Cryptography,关于这门密码学课,我有一些问题。我是PHP新手,我确信这是一个小的语法问题,但是有人能给我指出正确的方向吗?代码目前根本不起作用 这是密码 Cryptography.php Test.php 静态$key不能是其他函数的输出。它必须是文字。您可以将$key更改为某些函数,如创建密钥()并返回该包()输出。然后必须将所有$key更改为self::create_key()。同样的问题是,$iv_size,它也需要转换为self::get_iv_size() private static func

关于这门密码学课,我有一些问题。我是PHP新手,我确信这是一个小的语法问题,但是有人能给我指出正确的方向吗?代码目前根本不起作用

这是密码

Cryptography.php

Test.php


静态$key不能是其他函数的输出。它必须是文字。您可以将
$key
更改为某些函数,如
创建密钥()
并返回该
包()
输出。然后必须将所有
$key
更改为
self::create_key()
。同样的问题是,
$iv_size
,它也需要转换为
self::get_iv_size()

private static function create_key(){
    return pack('H*', "I-AINT-SHOWING-YOU-MY-KEY-LOL");
}
private static function get_iv_size(){ 
    return mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC);
}

“它不工作”不是一个适当的问题描述。这是我收到的错误消息之一“第10行的path\Cryptography.php中的Parse error:syntax error,意外的“(”,预期的“,”或“;”如果第10行是行,则键被声明在函数定义中,您需要将
$iv_size
$key
变量更改为
self:$iv_size
self:$key
,因为它们属于同一类-您可能会注意到它们现在没有定义。谢谢@n-dru,我已经完成了您所说的。同样的关于第10行的错误消息仍然出现。静态变量只能用文字或常量初始化。除了将
$key
设置为类变量并进行访问之外,为什么它们会包含另一个函数来执行之前的操作?您能解释一下吗?是的,它可以直接由函数生成我询问它们需要,而不是你不能在定义中使用表达式(即函数)。当然,你可以在构造函数中使用它们。
    require_once('Cryptography.php');

    $text = 'This is the string I am going to encrypt' . "\n\n";

    echo $text;

    $encrypted_text = Cryptography::encrypt($text);

    echo "{$encrypted_text}\n\n";

    $decrypted_text = Cryptography::decrypt($encrypted_text);

    echo "{$decrypted_text}\n\n";
private static function create_key(){
    return pack('H*', "I-AINT-SHOWING-YOU-MY-KEY-LOL");
}
private static function get_iv_size(){ 
    return mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC);
}