文字

openssl_pkcs7_decrypt

(PHP 4 >= 4.0.6, PHP 5)

openssl_pkcs7_decryptDecrypts an S/MIME encrypted message

说明

bool openssl_pkcs7_decrypt ( string $infilename , string $outfilename , mixed $recipcert [, mixed $recipkey ] )

Decrypts the S/MIME encrypted message contained in the file specified by infilename using the certificate and its associated private key specified by recipcert and recipkey.

参数

infilename

outfilename

The decrypted message is written to the file specified by outfilename.

recipcert

recipkey

返回值

成功时返回 TRUE , 或者在失败时返回 FALSE

范例

Example #1 openssl_pkcs7_decrypt() example

<?php
// $cert and $key are assumed to contain your personal certificate and private
// key pair, and that you are the recipient of an S/MIME message
$infilename  "encrypted.msg" ;   // this file holds your encrypted message
$outfilename  "decrypted.msg" // make sure you can write to this file

if ( openssl_pkcs7_decrypt ( $infilename $outfilename $cert $key )) {
    echo 
"decrypted!" ;
} else {
    echo 
"failed to decrypt!" ;
}
?>

用户评论:

[#1] oliver at anonsphere dot com [2011-04-28 21:16:11]

If you want to decrypt a received email, keep in mind that you need the full encrypted message including the mime header.

<?php

// Get the full message
$encrypted imap_fetchmime($stream$msg_number"1"FT_UID);
$encrypted .= imap_fetchbody($stream$msg_number"1"FT_UID);

// Write the needed temporary files
$infile tempnam("""enc");
file_put_contents($infile$encrypted); 
$outfile tempnam("""dec");

// The certification stuff
$public file_get_contents("/path/to/your/cert.pem");
$private = array(file_get_contents("/path/to/your/cert.pem"), "password");

// Ready? Go!
if(openssl_pkcs7_decrypt($infile$outfile$public$private))
{
    
// Decryption successful
    
echo file_get_contents($outfile);
}
else
{
    
// Decryption failed
    
echo "Oh oh! Decryption failed!";
}

// Remove the temp files
@unlink($infile);
@
unlink($outfile);

?>

上一篇: 下一篇: