2012-10-16 2 views
0

나는 이것을 간단히보고 있을지 모르지만 내가하고 싶은 것이 확실한지는 모르겠다.하지만이 방법을 사용하면 다른 파일을 읽고 쓸 필요가 없으므로 많은 시간을 절약 할 수있다.백틱을 사용하여 SSL 출력 캡처하기 Perl

내가하려고하는 것은 backticks를 사용하여 문자열의 특정 부분을 암호화하는 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, **&&**&& 

수 있을까요 I 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); 

답변

1

하려면 openssl은 조립할하고합니다 (-out 매개 변수 뒤에 사람) 특정 출력 파일에 작성하는 명령.

  1. 는 역 따옴표 연산자 직접 펄의 표준 출력 캡처
  2. 하자하려면 openssl 쓰기에 쓴 파일은 OpenSSL의 출력을 읽어 : 당신이 출력에 도달 할 경우 그래서 당신은 두 가지 선택이 . (; 확실히 더 해독 된 내용은 다른 사용자가 등 등을 읽을 수있는 파일 시스템의 어딘가에 유지하지 만드는 예는, 실패 여부를 삭제할 필요)

두 번째 버전은 임시 파일 및 그와 관련된 모든 번거 로움을 피할 수 .

명령에서 -out ... 매개 변수를 제거하면 간단합니다. 그런 다음 당신은 당신의 생각처럼 텍스트를 캡처 할 수 있습니다 : OpenSSL을 암호화 및 복호화를 수행 number of modules on CPAN을있다

my $encrypt_commnad = "openssl rsautl -encrypt -pubin -inkey $publickey -in $inputtext"; 
my $encrypted_text = `$encrypt_command`; 
+0

감사합니다. 완벽하게 작동합니다. 나는 그 이유로 임시 파일 아이디어 전체를 피하려고했다. – QuinsUK

1

. 아마 시스템 명령으로 자신의 모듈을 굴리기보다 모듈 중 하나를 사용하는 것이 더 쉬울 것입니다.