openssl에 파일 대신 문자열을 전달하는 방법은 무엇입니까?

openssl에 파일 대신 문자열을 전달하는 방법은 무엇입니까?

openssl을 사용하여 여러 문자열을 암호화하고 싶습니다. 일반 텍스트로 입력 파일을 지정하는 대신 콘솔에서 openssl로 일반 텍스트를 전달하려면 어떻게 해야 합니까?

openssl 매뉴얼 페이지에는 다음 두 가지 입력/출력 관련 옵션만 있습니다.

-in <file>     input file
-out <file>    output file

지금까지 시도한 내용은 다음과 같습니다.

이것은 잘 작동합니다.

openssl aes-256-cbc -a -K 00000000000000000000000000000000 -iv 00000000000000000000000000000000 -in plain.txt -out encrypted.txt

-out 매개변수를 생략하면 콘솔에 암호화된 문자열이 표시됩니다.

openssl aes-256-cbc -a -K 00000000000000000000000000000000 -iv 00000000000000000000000000000000 -in plain.txt

하지만 -in 및 -out을 생략하면 오류가 발생합니다. - Unknown option "encrypt me",

openssl aes-256-cbc -a -K 00000000000000000000000000000000 -iv 00000000000000000000000000000000 "Encrypt ME"

답변1

이것을 사용하십시오 :

user@host:~$ echo "my string to encrypt" | openssl aes-256-cbc -e -a -K 00000000000000000000000000000000 -iv 00000000000000000000000000000000
a7svR6j/uAz4kY9jvWbJaUR/d5QdH5ua/vztLN7u/FE=
user@host:~$ echo "a7svR6j/uAz4kY9jvWbJaUR/d5QdH5ua/vztLN7u/FE=" | openssl aes-256-cbc -d -a -K 00000000000000000000000000000000 -iv 00000000000000000000000000000000
my string to encrypt

또는 명령 대체를 사용할 수 있습니다.

user@host:~$ openssl aes-256-cbc -a -K 00000000000000000000000000000000 -iv \
00000000000000000000000000000000 -in <(echo "my string to encrypt") -out encrypted.txt

이러한 플래그는 매뉴얼 페이지에 문서화되어 있습니다 man openssl-enc.

  • -a:base64 처리 데이터입니다. 즉, 암호화된 경우 데이터는 암호화 후 Base64로 인코딩됩니다. 복호화가 설정된 경우 입력 데이터는 복호화 전에 Base64로 디코딩됩니다.
  • -d: 입력 데이터의 암호를 해독합니다.
  • -e: 입력 데이터 암호화
  • -K:실제 사용되는 키: 16진수로만 구성된 문자열로 표현되어야 합니다. 키만 지정한 경우에는 -iv 옵션을 사용하여 IV를 추가로 지정해야 합니다. 키와 비밀번호를 모두 지정한 경우 -K 옵션으로 지정한 키를 사용하고, 비밀번호에서 생성된 IV를 가져옵니다. 키와 비밀번호를 모두 지정하는 것은 아마도 의미가 없을 것입니다.
  • -iv:사용할 실제 IV: 16진수로만 구성된 문자열로 표현되어야 합니다. -K 옵션을 사용하여 키만 지정하는 경우 IV를 명시적으로 정의해야 합니다. 다른 옵션 중 하나를 사용하여 비밀번호를 지정하면 해당 비밀번호에서 IV가 생성됩니다.

답변2

무엇에 대해

echo encrypt Me | openssl aes-256-cbc -a -K 00000000000000000000000000000000 -iv 00000000000000000000000000000000

ps에서 "encrypt me"라는 일반 텍스트가 표시되는 것이 걱정된다면 파일을 가지고 앉아서 조심스럽게 삭제하는 것이 좋습니다.

답변3

여러 줄의 입력을 입력하려면 ctrl+ 로 끝나세요 d. e='e'개인정보 보호를 위해 환경 변수가 삭제됩니다.

e=$(cat); echo "$e" | openssl enc -aes-256-cbc -e -a; e='e'

관련 정보