使用密码的公钥加密:是否允许使用公共盐?

问题描述

为了构建端到端加密文件共享服务,我想使用 libsodium

想到了以下用例:

  • 用户设置密码
  • 密码用于创建密钥对
  • 公钥保存到数据库
  • 私钥根本没有保存(你必须记住你的密码)
  • 任何人都可以使用(可公开访问的)公钥发送文件

在实现这个想法时,我想使用 libsodiums 加密哈希函数

int crypto_pwhash(unsigned char * const out,unsigned long long outlen,const char * const passwd,unsigned long long passwdlen,const unsigned char * const salt,unsigned long long opslimit,size_t memlimit,int alg);

但它需要用户(显然)不记得的盐。那么可以将盐保存在“公共”数据库中吗? Libsodium 说它必须被存储并且不能被预测,这意味着它应该是私有的。

有没有办法绕过需要秘密盐的需要?

我实际上正在使用sodiumPlus 构建一个Web 应用程序,但我认为编码语言并不重要。 (https://github.com/paragonie/sodium-plus/blob/master/docs/SodiumPlus/)

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...