Openssl을 이용한 암호 프로그래밍 질문입니다. 고수님들 답변

ins878의 이미지

Openssl 함수를 이용하여 RSA암호 프로그래밍을 공부하고 있습니다.
다름이아니라, RSA 개인키, 공개키를 생성시켰습니다.
개인키 같은 경우, 패스프레이즈(passphrase)를 사용한 개인키와 사용하지 않은 개이키를 만들었습니다.
근데, passphrase를 생성하지 않은 개인키로 암호화하고, 복호화하는 것은 자료를 찾으면서 구현을 했는데요, passphrase가 있는 것은 어떻게 구현을 해야할지 모르겠습니다. passphrase가 있는 개인키를 로드하려고 하면 에러가 발생합니다. 다른 자료를 찾아봐도 특별히 어떻게 해야한다고 나와있지 않고요...
(참고로 키 형식은 PEM형식입니다.)
고수님들 passphrase가 있는 개인키를 어떻게 로드해야 합니까?

=====================================================================
개인키 로드 부분 (passphrase) 가 없을 경우
=====================================================================

rsa = PEM_read_bio_RSAPrivateKey(keyBIO,NULL,NULL,NULL);

이렇게 하면 이상없이 RSA 개인키를 로드합니다.

=======================================================================

====================================================================

개인키 로드 부분 (passphrase)가 있을 경우
=====================================================================

rsa = PEM_read_bio_RSAPrivateKey(keyBIO,NULL,0,"password");

자료를 찾아보니깐 4번째 인자에 비밀번호를 넣는 것으로 알고 있습니다.
그런데 이렇게 하면 개인키를 로드할 수 없다고 하네요.

======================================================================

어떻게 해야하는지...
passphrase가 있는 경우의 RSA 개인키를 로드하는 방법이 무엇인지 가르쳐 주세요. 고수님들 부탁드립니다.

stariki의 이미지

만약 아래와 같은 에러라면....

error:0906B072:lib(9):func(107):reason(114):pem_lib.c:481:

$ openssl errstr 0906B072
error:0906B072:PEM routines:PEM_get_EVP_CIPHER_INFO:unsupported encryption

You are probably just missing a call to OpenSSL_add_all_algorithms() in your application.

[출처]
http://www.mail-archive.com/openssl-users@openssl.org/msg50858.html

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.