加密的消息不会出现在页面上

时间:2016-11-08 13:09:55

标签: php laravel encryption laravel-4

我正在使用pgp-2fa并且在我当地工作得很好。我现在在主机上尝试它,但没有显示加密的消息。

工作方式是

$key = DB::table('users')->select('pgp_key')->where('user_id', '=', $data['user_id'])->first();
$pgp = new pgp_2fa();
$msg = '';

$pgp->generateSecret();
$enc = $pgp->encryptSecret($key->pgp_key);

return View::make('users.auth', ['enc'=> $enc]);

在这里,我从他的个人资料中选择了用户public pgp key并加密了该消息,然后他必须用他的私钥解密。

当我var_dump($enc);收到

bool(false)

var_dump($pgp); object(pgp_2fa)#336 (1) { ["secret":"pgp_2fa":private]=> string(15) "603893251905515" }

这是正确的string(15) "603893251905515"。我认为问题是$enc,因为它正在返回bool(false)

这就是我在视图中的内容

<pre>{{ $enc }}</pre>

再说一遍:这在我的本地工作得很好,但无法弄清楚为什么在这里不起作用。任何帮助表示赞赏。

更新:

var_dump($key);也会从此数据库中为此用户返回正确的密钥。我没有复制整个密钥因为很长:

object(stdClass)#353 (1) { ["pgp_key"]=> string(1756) "-----BEGIN PGP PUBLIC KEY BLOCK----- Version: GnuPG v1 m............

更新2:pgp-2fa.php

class pgp_2fa {
    private $secret;

// Generate safe hash of unencrypted secret, push it to the session and save unencrypted secret locally


public function generateSecret(){

    // Generate unencrypted secret

    $secret = generateSecretKey();

    // Hash the secret with bcrypt

    $secret_hash = password_hash($secret, PASSWORD_BCRYPT);

    // Save within the session
    Session::set('pgp-secret-hash', $secret_hash);
    $this->secret = $secret;
}

// Encrypt secret with PGP public key

public function encryptSecret($public_key){

    // Set GnuPG homedir to /tmp

    putenv("GNUPGHOME=/tmp");

    // Create new GnuPG instance

    $gpg = new gnupg();

    // Import given public key

    $key = $gpg->import($public_key);

    // Add imported key for encryption

    $gpg->addencryptkey($key['fingerprint']);

    // Encrypt the secret to a PGP message

    $enc = $gpg->encrypt($this->secret);

    // Clear the encryption key

    $gpg->clearencryptkeys();

    // Return  the PGP message

    return $enc;
}
} 

0 个答案:

没有答案