6个版本 (3个破坏性更新)
0.8.1 | 2023年9月11日 |
---|---|
0.8.0 | 2023年8月23日 |
0.7.0 | 2022年10月17日 |
0.6.1 | 2022年7月14日 |
0.5.0 | 2022年5月17日 |
在加密学类别中排名#164
14MB
267K SLoC
简介
Sunscreen是一个使用完全同态加密构建隐私保护应用的生态系统。
本项目遵循GNU AGPLv3许可协议。如果您需要为您的应用程序获取不同版本的许可,请与我们联系。
警告! 此库仅供实验使用。它尚未经过外部审计,且 不 适用于生产环境。
示例
下面,我们来看一下如何将两个加密整数相乘。
use sunscreen::{
fhe_program,
types::{bfv::Signed, Cipher},
Compiler, Error, FheRuntime,
};
#[fhe_program(scheme = "bfv")]
fn simple_multiply(a: Cipher<Signed>, b: Cipher<Signed>) -> Cipher<Signed> {
a * b
}
fn main() -> Result<(), Error> {
let app = Compiler::new()
.fhe_program(simple_multiply)
.compile()?;
let runtime = FheRuntime::new(app.params())?;
let (public_key, private_key) = runtime.generate_keys()?;
let a = runtime.encrypt(Signed::from(15), &public_key)?;
let b = runtime.encrypt(Signed::from(5), &public_key)?;
let results = runtime.run(app.get_fhe_program(simple_multiply).unwrap(), vec![a, b], &public_key)?;
let c: Signed = runtime.decrypt(&results[0], &private_key)?;
assert_eq!(c, 75.into());
Ok(())
}
文档
获取帮助
有关Sunscreen的问题,请加入我们的Discord!
依赖项
~12–18MB
~284K SLoC