0

私はこれを単純に見ているかもしれませんが、やりたいことが可能かどうかはわかりませんが、これにより、さまざまなファイルを読み込んだり読み込んだりする必要がなくなり、多くの時間を節約できます。

私がやろうとしているのは、バックティックを使用して、文字列の特定の部分を暗号化する OpenSLL exe の出力を受け取ることです。次に、出力を使用して別のファイルに追加します。OpenSLL は自動的にテキスト ファイルに出力します。

例えば:

Sample text: 1234, test text
ID- 1234, 
Encrypted text- test text

その後になります

ID- 1234, 
Returned encrypted text- **&&**&&
And then be output to a file
1234, **&&**&&

これは、暗号化されたテキストを読み込んで解析し、出力を新しいファイルに追加することで実行できることを知っていますが、これを100行または1000行で実行しようとしているので、余分なものになるため、これを避けたいと思っていました処理。

私のアイデアをご覧いただければ幸いです。

#!/usr/bin/perl -w
use strict;

my $OpenSLLFile = "\\openssl.exe";

my $publickey = "public.pem";
my $privatekey = "private.pem";
my $inputtext = "output.txt";
my $outputtext = "abcd.txt";
my $compID = "1232";

my $encryptiontext = "openssl rsautl -encrypt -pubin -inkey $publickey -in $inputtext -out $outputtext";
my $decryptiontext = "openssl rsautl -decrypt -inkey $privatekey -in encrypted.txt -out plaintext.txt";

#Idea 1
#my $test = `$encryptiontext`;

#Idea 2    
#my $test = system ("$encryptiontext");

#Idea 3
`$encryptiontext`
my $test =  $?;

open (outputtest, '>>outputtest.txt') or die "$!";

my $a = "$compID, $test";

print outputtest "$a\n";

close(outputtest);
4

2 に答える 2

1

つなぎ合わせている openssl コマンドは、特定の出力ファイル (-outパラメーターの後のファイル) に書き込みます。したがって、出力に到達したい場合は、2 つの選択肢があります。

  1. openssl が書き込んだファイルから出力を読み取る
  2. openssl が標準出力に書き込み、バッククォート演算子を使用して Perl で直接キャプチャできるようにします。

2 番目のバージョンでは、一時ファイルとそれに関連するすべての煩わしさが回避されます (たとえば、それらを削除する必要があるかどうか、失敗するかどうか、他のユーザーが読み取ることができるファイル システムのどこかに復号化されたコンテンツが残らないようにするなど)。

-out ...これは、コマンドからパラメーターを削除することで簡単になります。次に、アイデアのようにテキストをキャプチャできます。

my $encrypt_commnad = "openssl rsautl -encrypt -pubin -inkey $publickey -in $inputtext";
my $encrypted_text  = `$encrypt_command`;
于 2012-10-16T09:50:08.570 に答える
1

CPANには、OpenSSL の暗号化と復号化を行うモジュールが多数あります。システムコマンドで独自のモジュールを展開しようとするよりも、これらのモジュールのいずれかを使用する方がおそらく簡単でしょう。

于 2012-10-16T10:00:01.967 に答える