[ios] 디지털 서명 알고리즘

디지털 서명은 전자 문서나 데이터의 인증과 정당성을 보장하기 위해 사용됩니다. 디지털 서명 알고리즘은 이러한 목적을 달성하기 위해 사용되는 표준화된 수학적 알고리즘입니다.

RSA 알고리즘

RSA(라이브네임은 Rivest-Shamir-Adleman의 앞 글자를 따서 지어졌습니다) 알고리즘은 대표적인 디지털 서명 알고리즘 중 하나입니다. RSA 알고리즘은 소인수분해의 어려움을 기반으로 하여 안전한 키 교환과 디지털 서명을 제공합니다. 이 알고리즘은 공개키와 개인키를 사용하여 메시지를 암호화하고 서명하는 데에 사용됩니다.

import java.security.KeyPair;
import java.security.KeyPairGenerator;
import java.security.PrivateKey;
import java.security.PublicKey;
import java.security.Signature;

KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance("RSA");
keyPairGenerator.initialize(2048);
KeyPair keyPair = keyPairGenerator.generateKeyPair();

PrivateKey privateKey = keyPair.getPrivate();
PublicKey publicKey = keyPair.getPublic();

ECC 알고리즘

ECC(타원 곡선 암호화) 알고리즘은 RSA보다 효율적인 키 교환과 디지털 서명을 제공하는 더 최근에 개발된 암호화 알고리즘입니다. ECC 알고리즘은 RSA에 비해 키의 크기가 작고 연산량이 적은 장점을 갖고 있습니다.

from Cryptodome.PublicKey import ECC
from Cryptodome.Hash import SHA256
from Cryptodome.Signature import DSS

# Generate a new private ECC key
private_key = ECC.generate(curve='P-256')

# Sign a message using the private key
message = b'example message'
hash_obj = SHA256.new(message)
signer = DSS.new(private_key, 'fips-186-3')
signature = signer.sign(hash_obj)

참조