다음과 같이 해시를 암호화해야 합니다.
2c1400f69867571ab4e60d3b8f01e0b17c7be89e321f91f8a07cd39eeba202e2
mykey.key
나에게 제공된 공개 키를 사용하여 RSA 알고리즘을 사용합니다(예: ). 어떻게 해야 하나요? 웹사이트에서 사용하라고 안내하는 것을 보지만 openssl
어떻게 해야 할지 모르겠습니다.
편집 : 나는 이것을 시도했다
파일을 만들고 다음을 수행하여 해시를 밀어넣었습니다.
echo "2c1400f69867571ab4e60d3b8f01e0b17c7be89e321f91f8a07cd39eeba202e2" >file.txt
그럼 이건
openssl rsautl -inkey mykey.key -pubin -encrypt -in file.txt > file.txt.enc
메모장에서 file.txt.enc를 열려고 하면 다음 메시지가 나타납니다.
바이너리 형식의 암호문 결과가 필요하기 때문에 이것이 성공적인 암호화인지 확실하지 않습니다.
답변1
바이너리 형식의 암호문 결과가 필요하기 때문에 이것이 성공적인 암호화인지 확실하지 않습니다.
암호화가 성공했는지 테스트하고 싶다면 지금 암호 해독을 시도하여 일반 텍스트를 복구할 수 있는지 확인하세요. 일반 텍스트를 복구할 수 있다면 좋을 것 같습니다.
"바이너리 형식"이 실제로 무엇을 의미하는지 혼란스러워 하시는 것 같습니다.
이것:
2c1400f69867571ab4e60d3b8f01e0b17c7be89e321f91f8a07cd39eeba202e2
실제로는 문자16진수형식-a텍스트 표현이진 값.
시스템의 모든 파일이나 데이터 블록은 궁극적으로 일련의바이트- 바이트(단순화를 위해 비트에 대해 걱정하지 마세요)는 0에서 255 사이의 숫자일 뿐입니다. 바이트를 10진수, 16진수, 2진수 또는 바이트를 처리하기 위해 애플리케이션에서 수행해야 하는 모든 항목으로 쓰거나 표시할 수 있습니다.
텍스트를 숫자, UTF-8, 유니코드 등으로 표현하는 다양한 방식이 있습니다.
이를 설명하기 위해 바이트로 변환된 텍스트 문자열 "2c1400f69867571ab4e60d3b8f01e0b17c7be89e321f91f8a07cd39eeba202e2"는 다음과 같습니다(10진수로 표시).
50 99 49 52 48 48 102 54 57 56 54 55 53 55 49 97
98 52 101 54 48 100 51 98 56 102 48 49 101 48 98 49
55 99 55 98 101 56 57 101 51 50 49 102 57 49 102 56
97 48 55 99 100 51 57 101 101 98 97 50 48 50 101 50
개행 문자를 추가합니다. 총 65바이트 또는 로케일이 16비트 문자(예: 유니코드)를 사용하는 경우 130바이트입니다. 유니코드는 위의 값과 동일하며 각 값 앞에 0이 붙습니다. 물론, 텍스트가 나타내는 값과 동일하지는 않습니다.
따라서 위의 일련의 바이트는 openssl
실제 값 "2c1400f69867571ab4e60d3b8f01e0b17c7be89e321f91f8a07cd39eeba202e2"(매우 긴 십진수)가 아니라 실제로 암호화하도록 지시하는 것입니다.
따라서 위의 내용에 따라 file.txt.enc
65개 또는 130개의 임의 값이 있을 수 있습니다. 이것이 메모장이 제시하려는 것입니다.
이제 당신이 원한다면텍스트 16진수 표현~의콘텐츠귀하의 것 file.txt.enc
- 제 생각에는 이것이 효과가 있을 것 같습니다.이것):
xxd -p file | tr -d '\n'
답변2
노력하다:
$ cat file.txt | openssl rsautl -encrypt -pubin -inkey mykey.key > secret.txt
cat secret.txt
}[4�Or)f���r�_
# more binary data here...
그런 다음:
$ cat secret.txt | openssl rsautl -decrypt -inkey myprivatekey.key
2c1400f69867571ab4e60d3b8f01e0b17c7be89e321f91f8a07cd39eeba202e2
두 키 모두 PEM 형식이어야 합니다.
답변3
여기에서 많은 질문에 대한 답변(예제 포함)을 찾을 수 있습니다.
https://www.madboa.com/geek/openssl/
특히 프로세스의 암호화된 결과를 이메일로 보내는 경우 "enc" 하위 명령의 "-a" 옵션을 사용하거나 "base64" openssl 하위 명령의 별도 단계로 이를 Base64로 인코딩할 수 있습니다.
그러면 인쇄할 수 없는 바이트의 이진 파일이 아닌 ASCII 텍스트 결과가 생성됩니다.
먼저 암호화를 확인하고 자신만의 (테스트) RSA 키 파일을 생성한 다음(openssl도 사용, 위 링크 참조) 암호화-(base64)인코딩-디코딩-복호화의 "왕복"을 시도하는 것이 좋습니다.
자체 테스트 RSA 키(쌍)를 사용하고 입력한 것과 동일한 결과를 얻는다면 최소한 메커니즘이 정확하다고 말하는 것이 합리적입니다.
그런 다음 제공된 RSA 키 파일을 사용하여 의도한 수신자에게 추가 텍스트를 보내 "실제" 데이터를 보내기 전에 모든 것이 올바른지 확인할 수 있습니다.희망입력하신 질문과 다릅니다! (인증을 위해 암호화를 사용하지 않는 한)