9个版本
0.1.8 | 2021年2月6日 |
---|---|
0.1.7 | 2021年2月6日 |
0.1.5 | 2021年1月31日 |
1744 在 加密学 中排名
每月42次 下载
21KB
410 行
SRP (安全远程密码)
基于RFC5054规范的实现。也请参阅维基百科上的SRP描述。
目前仅支持SHA-256,其他将在未来计划中支持。
用法
将库添加到您的cargo.toml
[dependencies]
...
rust-srp = "0.1.8"
...
程序
客户端和服务器交互的高级描述。也可以从测试用例test_srp_client_server中找到示例。
客户端程序
let n = <bigint>;
let g = <bigint>;
// Create the client
let mut client = SrpClient::new(n.clone(), g.clone());
// Create public key (A, bigint)
let a = client.step_1(<username>.clone(), <password>.clone());
// Create a client evidence (M1, bigint)
let m_1 = client.step_2(<salt>.clone(), b.clone());
// Validate server evidence (M2, bigint).
// Note: At this point the client is no longer usable, as it has passed its ownership to the function.
client.step_3(m_2)
服务器程序
let n = <bigint>;
let g = <bigint>;
// Create server with the public client key A
let mut server = SrpServer::new(a, n.clone(), g.clone());
// Create public key B by locating the SRP params for user identity I
let b = server.step_1(<username>.clone(), <salt>.clone(), <verifier>.clone());
// Validate client evidence M1, and create server evidence M2.
// Note: At this point the server is no longer valid, as it has passed its ownership to the function.
let m_2 = server.step_2(m_1);
// If M1 is valid, then from the server's point of view, client is now authenticated
依赖关系
~2MB
~45K SLoC