diff --git a/kernel/model/repository.go b/kernel/model/repository.go index af0134a56..9ffa336ec 100644 --- a/kernel/model/repository.go +++ b/kernel/model/repository.go @@ -145,7 +145,6 @@ func InitRepoKeyFromPassphrase(passphrase string) (err error) { } util.PushMsg(Conf.Language(136), 3000) - if err = os.RemoveAll(Conf.Repo.GetSaveDir()); nil != err { return } @@ -153,12 +152,21 @@ func InitRepoKeyFromPassphrase(passphrase string) (err error) { return } - salt := fmt.Sprintf("%x", sha256.Sum256([]byte(passphrase)))[:16] - key, err := encryption.KDF(passphrase, salt) - if nil != err { - logging.LogErrorf("init data repo key failed: %s", err) - return + var key []byte + base64Data, base64Err := base64.StdEncoding.DecodeString(passphrase) + if nil == base64Err { + // 改进数据仓库 `通过密码生成密钥` https://github.com/siyuan-note/siyuan/issues/6782 + logging.LogInfof("passphrase is base64 encoded, use it as key directly") + key = base64Data + } else { + salt := fmt.Sprintf("%x", sha256.Sum256([]byte(passphrase)))[:16] + key, err = encryption.KDF(passphrase, salt) + if nil != err { + logging.LogErrorf("init data repo key failed: %s", err) + return + } } + Conf.Repo.Key = key Conf.Save()