From ce17ca0264c95906c37ef1348d3f112b4d071b4d Mon Sep 17 00:00:00 2001 From: Liang Ding Date: Sun, 4 Dec 2022 22:32:30 +0800 Subject: [PATCH] =?UTF-8?q?:art:=20=E6=94=B9=E8=BF=9B=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E4=BB=93=E5=BA=93=20`=E9=80=9A=E8=BF=87=E5=AF=86=E7=A0=81?= =?UTF-8?q?=E7=94=9F=E6=88=90=E5=AF=86=E9=92=A5`=20Fix=20https://github.co?= =?UTF-8?q?m/siyuan-note/siyuan/issues/6782?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- kernel/model/repository.go | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) 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()