2012-10-17 42 views
5

如何在perl中使用數字簽名簽署pdf文件?我能提取PDF格式的內容,並通過產生在perl中將簽名添加到PDF中

#$內容簽名字符串 - > PDF內容進行簽名

我的$ PRIVATE_KEY地穴:: OpenSSL的:: RSA-> new_private_key($ KEY_STRING );
$ private_key-> use_md5_hash();
my $ signature = $ private_key-> sign($ content);

因此,$簽名可以轉換爲十六進制格式,但我不知道如何將它添加到PDF文件中。我知道十六進制形式的簽名應該放在/ Contents字段中,並且簽名文本的範圍由/ ByteRange數組給出。

有沒有用於此目的的模塊?或者你可以給我任何建議如何做到這一點?由於

回答

0
use Crypt::OpenSSL::RSA; 
use File::Slurp; 

my $keystring = read_file('private_key.pem'); 
my $private_key = Crypt::OpenSSL::RSA->new_private_key($keystring); 
$private_key->use_md5_hash(); 
my $signature = $private_key->sign($plaintext); 
+1

謝謝。這是簽名創建的原則。但PDF格式的獨特之處在於它包含了對簽名進行嵌入的支持。所以,問題不是「如何創建簽名?」,而是「如何將簽名嵌入到PDF中?」。 如果沒有啓用它的Perl模塊(類似於iText for Java),我將很感激一些鏈接來描述和解釋這個過程。 在Java中,這可以通過iText庫完成。但我需要在Perl中完成。所以如果沒有 – user1753233

1

你會發現這個腳本有趣...... http://mschuette.name/files/pdfsign.pl它使用PDF :: API2和地穴:: OpenSSL的待辦事項它的魔力......這大概可以作爲創建你自己的東西的基礎。