쉘에서 문자열을 어떻게 암호화 할 수 있습니까?


20

명령 프롬프트에서 공개 키를 사용하여 메시지 (문자열)를 암호화 할 수 있습니까? 또한 나중에 결과를 어떻게 해독 할 수 있습니까?

답변:


28

다른 옵션은 openssl다음과 같습니다.

# generate a 2048-bit RSA key and store it in key.txt
openssl genrsa -out key.txt 2048

# encrypt "hello world" using the RSA key in key.txt
echo "hello world" | openssl rsautl -inkey key.txt -encrypt >output.bin

# decrypt the message and output to stdout
openssl rsautl -inkey key.txt -decrypt <output.bin

gpg보다 일반적으로 설치되기 때문에 openssl에 +1
Doug Harris

이것은 완벽합니다-Mac, Alpine, 무엇이든 잘 작동합니다!
Jeremy Iglehart

예, 파일을 사용하지 않고 인수를 사용하는 예는 어떻습니까?
Alexander Mills

11

이 경우 gpg설치, 이것은 업계 최강의 암호화 방법입니다.

gpg --encrypt -r recipient@example.com> tempfile

콘솔에서 데이터를 입력하고를 눌러 Ctrl+D텍스트를 종료하십시오. 그러면에 암호화 된 데이터가 제공됩니다 tempfile. 해독하려면

gpg --detemp <tempfile

recipient@example.com메시지를 해독하려면 암호가 필요합니다 .


그렇다면 암호를 대화식으로 입력해야하는 경우 비 대화식으로 수행하는 방법은 무엇입니까? 비 대화식으로 어떻게합니까?
Alexander Mills

gpg --encrypt -r recipient@example.com >tempfile gpg: error retrieving 'recipient@example.com' via WKD: No data gpg: recipient@example.com: skipped: No data gpg: [stdin]: encryption failed: No data (나는 맥에있다)
Alexander Mills

5
  1. 개인 / 공개 키 쌍 생성

    $ openssl genrsa -out rsa_key.pri 2048; openssl rsa -in rsa_key.pri -out rsa_key.pub -outform PEM -pubout
    
  2. 공개 키를 사용하여 문자열을 암호화하고 파일에 저장

    $ echo "stockexchange.com" | openssl rsautl -encrypt -inkey rsa_key.pub -pubin -out secret.dat
    
  3. 개인 키를 사용하여 암호화 해제

    $ string=`openssl rsautl -decrypt -inkey rsa_key.pri -in secret.dat `; echo $string
    stockexchange.com
    

4

남자 토굴 (1)

노트:

crypt는 German Enigma의 선을 따라 설계되었지만 256 요소 로터가있는 단일 로터 시스템을 구현합니다. 이러한 시스템에 대한 공격 방법은 널리 알려져 있으므로 암호화는 최소한의 보안을 제공합니다.

그러나 데모 목적으로는 괜찮습니다.


"Oracle Solaris 10 8/11 정보 라이브러리"
Sebas
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.