Skip to main content

REST API에 대한 비밀 암호화

REST API를 사용하여 비밀을 만들거나 업데이트하려면 비밀 값을 암호화해야 합니다.

암호화된 비밀 정보

여러 REST API 엔드포인트를 사용하면 GitHub에 비밀을 만들 수 있습니다. 이러한 엔드포인트를 사용하려면 libsodium을 사용하여 비밀 값을 암호화해야 합니다. 자세한 정보는 libsodium 설명서를 참조하세요.

비밀을 암호화하려면 Base64로 인코딩된 공개 키가 필요합니다. REST API에서 공개 키를 받을 수 있습니다. 공개 키를 가져오는 데 사용할 엔드포인트를 확인하려면 비밀을 만드는 데 사용할 엔드포인트의 encrypted_value 매개 변수에 대한 설명서를 참조하세요.

Node.js를 사용하여 비밀을 암호화하는 예제

Node.js를 사용하는 경우 libsodium-wrappers 라이브러리를 사용하여 비밀을 암호화할 수 있습니다. 자세한 정보는 libsodium-wrappers를 참조하세요.

다음 예제에서는 암호화하려는 일반 텍스트 값으로 YOUR_SECRET을 바꿉니다. Base64로 인코딩된 공개 키로 YOUR_BASE64_KEY를 바꿉니다. 비밀을 만드는 데 사용할 엔드포인트에 대한 설명서에서는 공개 키를 가져오는 데 사용할 수 있는 엔드포인트를 알려줍니다. ORIGINAL이 자리 표시자가 아닌 경우 libsodium-wrappers 라이브러리에 대한 매개 변수입니다.

JavaScript
const sodium = require('libsodium-wrappers')

const secret = 'YOUR_SECRET'
const key = 'YOUR_BASE64_KEY'

//Check if libsodium is ready and then proceed.
sodium.ready.then(() => {
  // Convert the secret and key to a Uint8Array.
  let binkey = sodium.from_base64(key, sodium.base64_variants.ORIGINAL)
  let binsec = sodium.from_string(secret)

  // Encrypt the secret using libsodium
  let encBytes = sodium.crypto_box_seal(binsec, binkey)

  // Convert the encrypted Uint8Array to Base64
  let output = sodium.to_base64(encBytes, sodium.base64_variants.ORIGINAL)

  // Print the output
  console.log(output)
});

Python을 사용한 비밀 암호화 예제

Python 3을 사용하는 경우 PyNaCl 라이브러리를 사용하여 비밀을 암호화할 수 있습니다. 자세한 정보는 PyNaCl를 참조하세요.

다음 예제에서는 암호화하려는 일반 텍스트 값으로 YOUR_SECRET을 바꿉니다. Base64로 인코딩된 공개 키로 YOUR_BASE64_KEY를 바꿉니다. 비밀을 만드는 데 사용할 엔드포인트에 대한 설명서에서는 공개 키를 가져오는 데 사용할 수 있는 엔드포인트를 알려줍니다.

Python
from base64 import b64encode
from nacl import encoding, public

def encrypt(public_key: str, secret_value: str) -> str:
  """Encrypt a Unicode string using the public key."""
  public_key = public.PublicKey(public_key.encode("utf-8"), encoding.Base64Encoder())
  sealed_box = public.SealedBox(public_key)
  encrypted = sealed_box.encrypt(secret_value.encode("utf-8"))
  return b64encode(encrypted).decode("utf-8")

encrypt("YOUR_BASE64_KEY", "YOUR_SECRET")

C#을 사용한 비밀 암호화 예제

C#을 사용하는 경우 Sodium.Core 패키지를 사용하여 비밀을 암호화할 수 있습니다. 자세한 정보는 Sodium.Core를 참조하세요.

다음 예제에서는 암호화하려는 일반 텍스트 값으로 YOUR_SECRET을 바꿉니다. Base64로 인코딩된 공개 키로 YOUR_BASE64_KEY를 바꿉니다. 비밀을 만드는 데 사용할 엔드포인트에 대한 설명서에서는 공개 키를 가져오는 데 사용할 수 있는 엔드포인트를 알려줍니다.

C#
var secretValue = System.Text.Encoding.UTF8.GetBytes("YOUR_SECRET");
var publicKey = Convert.FromBase64String("YOUR_BASE64_KEY");

var sealedPublicKeyBox = Sodium.SealedPublicKeyBox.Create(secretValue, publicKey);

Console.WriteLine(Convert.ToBase64String(sealedPublicKeyBox));

Ruby를 사용한 비밀 암호화 예제

Ruby를 사용하는 경우 RbNaCl gem을 사용하여 비밀을 암호화할 수 있습니다. 자세한 정보는 RbNaCl을 참조하세요.

다음 예제에서는 암호화하려는 일반 텍스트 값으로 YOUR_SECRET을 바꿉니다. Base64로 인코딩된 공개 키로 YOUR_BASE64_KEY를 바꿉니다. 비밀을 만드는 데 사용할 엔드포인트에 대한 설명서에서는 공개 키를 가져오는 데 사용할 수 있는 엔드포인트를 알려줍니다.

Ruby
require "rbnacl"
require "base64"

key = Base64.decode64("YOUR_BASE64_KEY")
public_key = RbNaCl::PublicKey.new(key)

box = RbNaCl::Boxes::Sealed.from_public_key(public_key)
encrypted_secret = box.encrypt("YOUR_SECRET")

# Print the base64 encoded secret
puts Base64.strict_encode64(encrypted_secret)