암호화된 비밀 정보
여러 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 라이브러리에 대한 매개 변수입니다.
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) });
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
를 바꿉니다. 비밀을 만드는 데 사용할 엔드포인트에 대한 설명서에서는 공개 키를 가져오는 데 사용할 수 있는 엔드포인트를 알려줍니다.
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")
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
를 바꿉니다. 비밀을 만드는 데 사용할 엔드포인트에 대한 설명서에서는 공개 키를 가져오는 데 사용할 수 있는 엔드포인트를 알려줍니다.
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));
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
를 바꿉니다. 비밀을 만드는 데 사용할 엔드포인트에 대한 설명서에서는 공개 키를 가져오는 데 사용할 수 있는 엔드포인트를 알려줍니다.
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)
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)