Browse Source

fix:文件加密bug修改

master
刘子旺 6 months ago
parent
commit
790eb99bc8
  1. 81
      godo/files/pwdfile.go

81
godo/files/pwdfile.go

@ -39,17 +39,11 @@ func HandleWriteFile(w http.ResponseWriter, r *http.Request) {
} }
defer fileContent.Close() defer fileContent.Close()
fileData, err := io.ReadAll(fileContent) fileData, err := io.ReadAll(fileContent)
fmt.Println("表单数据为:", string(fileData))
if err != nil { if err != nil {
libs.HTTPError(w, http.StatusInternalServerError, err.Error()) libs.HTTPError(w, http.StatusInternalServerError, err.Error())
return return
} }
configPwd, ishas := libs.GetConfig("filePwd") configPwd, ishas := libs.GetConfig("filePwd")
configPwdStr, ok := configPwd.(string)
if !ok {
libs.HTTPError(w, http.StatusInternalServerError, "配置文件密码格式错误")
return
}
if !ishas { if !ishas {
// 没开启加密,直接明文写入 // 没开启加密,直接明文写入
_, err := newFile.Write(fileData) _, err := newFile.Write(fileData)
@ -63,28 +57,34 @@ func HandleWriteFile(w http.ResponseWriter, r *http.Request) {
} }
libs.SuccessMsg(w, "", "文件写入成功") libs.SuccessMsg(w, "", "文件写入成功")
return return
} else {
// 开启加密后,写入加密数据
configPwdStr, ok := configPwd.(string)
if !ok {
libs.HTTPError(w, http.StatusInternalServerError, "配置文件密码格式错误")
return
}
_, err = newFile.WriteString(fmt.Sprintf("@%s@", configPwdStr))
if err != nil {
libs.HTTPError(w, http.StatusInternalServerError, "密码写入失败")
return
}
entryData, err := libs.EncryptData(fileData, []byte(configPwdStr))
if err != nil {
libs.HTTPError(w, http.StatusInternalServerError, "文件加密失败")
return
}
_, err = newFile.Write(entryData)
if err != nil {
libs.HTTPError(w, http.StatusInternalServerError, "文件写入失败")
return
}
err = CheckAddDesktop(path)
if err != nil {
log.Printf("Error adding file to desktop: %s", err.Error())
}
libs.SuccessMsg(w, "", "文件写入成功")
} }
// 开启加密后,写入加密数据
_, err = newFile.WriteString(fmt.Sprintf("@%s@", configPwdStr))
if err != nil {
libs.HTTPError(w, http.StatusInternalServerError, "密码写入失败")
return
}
entryData, err := libs.EncryptData(fileData, []byte(configPwdStr))
if err != nil {
libs.HTTPError(w, http.StatusInternalServerError, "文件加密失败")
return
}
_, err = newFile.Write(entryData)
if err != nil {
libs.HTTPError(w, http.StatusInternalServerError, "文件写入失败")
return
}
err = CheckAddDesktop(path)
if err != nil {
log.Printf("Error adding file to desktop: %s", err.Error())
}
libs.SuccessMsg(w, "", "文件写入成功")
} }
func HandleReadFile(w http.ResponseWriter, r *http.Request) { func HandleReadFile(w http.ResponseWriter, r *http.Request) {
@ -153,21 +153,22 @@ func HandleReadFile(w http.ResponseWriter, r *http.Request) {
res := libs.APIResponse{Message: "加密文件读取成功", Data: content} res := libs.APIResponse{Message: "加密文件读取成功", Data: content}
json.NewEncoder(w).Encode(res) json.NewEncoder(w).Encode(res)
return return
} } else {
// Pwd不为空,Pwd与文件密码做比对 // Pwd不为空,Pwd与文件密码做比对
if Pwd != filePwd { if Pwd != filePwd {
res := libs.APIResponse{Message: "密码错误,请输入正确的密码", Code: -1, Error: "needPwd"} res := libs.APIResponse{Message: "密码错误,请输入正确的密码", Code: -1, Error: "needPwd"}
json.NewEncoder(w).Encode(res)
return
}
decryptData, err := libs.DecryptData(fileData[34:], []byte(filePwd))
if err != nil {
libs.ErrorMsg(w, err.Error())
return
}
content := base64.StdEncoding.EncodeToString(decryptData)
res := libs.APIResponse{Message: "加密文件读取成功", Data: content}
json.NewEncoder(w).Encode(res) json.NewEncoder(w).Encode(res)
return
}
decryptData, err := libs.DecryptData(fileData[34:], []byte(filePwd))
if err != nil {
libs.ErrorMsg(w, err.Error())
return
} }
content := base64.StdEncoding.EncodeToString(decryptData)
res := libs.APIResponse{Message: "加密文件读取成功", Data: content}
json.NewEncoder(w).Encode(res)
} }
func HandleSetFilePwd(w http.ResponseWriter, r *http.Request) { func HandleSetFilePwd(w http.ResponseWriter, r *http.Request) {

Loading…
Cancel
Save