
RSA 공개 키 암호화를 위한 순수 Rust 라이브러리: 키 생성, PKCS#1 v1.5 및 OAEP 암호화/복호화, PSS 서명, 키 가져오기/내보내기.
순수 Rust로 작성된 이식 가능한 RSA 구현체입니다.
use rsa::{Pkcs1v15Encrypt, RsaPrivateKey, RsaPublicKey};
let mut rng = rand::rng();
let bits = 2048;
let priv_key = RsaPrivateKey::new(&mut rng, bits).expect("failed to generate a key");
let pub_key = RsaPublicKey::from(&priv_key);
// Encrypt
let data = b"hello world";
let enc_data = pub_key.encrypt(&mut rng, Pkcs1v15Encrypt, &data[..]).expect("failed to encrypt");
assert_ne!(&data[..], &enc_data[..]);
// Decrypt
let dec_data = priv_key.decrypt(Pkcs1v15Encrypt, &enc_data).expect("failed to decrypt");
assert_eq!(&data[..], &dec_data[..]);
참고:
RsaPrivateKey::new를 사용할 때 키 생성 시간이 비정상적으로 느리다면 릴리스 모드로 컴파일하거나Cargo.toml에 다음을 추가해 보세요. 더 높은 최적화 수준으로 빌드하면 키 생성이 훨씬 빨라지지만 컴파일 시간이 다소 늘어납니다.[profile.debug] opt-level = 3
현재 Phase 1 (v) 🚧 단계입니다.
1.0 🚢이 릴리스되기 전에 세 단계가 있습니다.
이 크레이트는 Include Security의 보안 감사를 한 차례 받았으며, 이후 해결된 사소한 발견 사항이 하나뿐입니다.
다른 알려진 문제는 이슈 트래커의 공개 보안 이슈를 참조하세요.
특히 모듈러 지수 연산은 일정 시간이 아닌 구현이지만,
타이밍 변동성은 일반적으로 사용되는 기법인 랜덤 블라인딩으로
마스킹됩니다. 이 크레이트는 Marvin Attack에 취약하여 네트워크 공격자가
개인 키를 복구할 수 있습니다(RUSTSEC-2023-0071 참조).
이 문제 완화를 위한 작업은 #390에서 확인할 수 있습니다.
이 크레이트는 Rust 1.85 이상을 지원합니다.
향후 MSRV는 변경될 수 있지만, 이는 부 버전 업데이트와 함께 변경될 것입니다.
다음 중 하나의 라이선스에 따라 사용이 허가됩니다:
선택 사항입니다.
명시적으로 달리 명시하지 않는 한, Apache-2.0 라이선스에 정의된 대로 귀하가 이 저작물에 포함시키기 위해 의도적으로 제출하는 모든 기여물은 추가 약관이나 조건 없이 위와 같이 이중 라이선스가 적용됩니다.