”工欲善其事,必先利其器。“—孔子《论语.录灵公》
首页 > 编程 > 如何在没有 syscall 或 scrypt 的情况下安全地在 Golang/App Engine 中对密码进行哈希处理?

如何在没有 syscall 或 scrypt 的情况下安全地在 Golang/App Engine 中对密码进行哈希处理?

发布于2024-11-08
浏览:781

How to Securely Hash Passwords in Golang/App Engine Without syscall or scrypt?

在 Golang/App Engine 中安全地散列密码,无需系统调用或 scrypt

虽然 bcrypt 和 scrypt 通常用于密码散列,但它们可能不由于系统调用可访问性,适合 App Engine。作为替代方案,请考虑利用 go.crypto 库进行安全密码散列。

go.crypto 包提供对 pbkdf2 和 bcrypt 的支持。两种实现均完全用 Go 编写,确保与 App Engine 兼容。

1。使用bcrypt

使用以下步骤实现bcrypt:

go get golang.org/x/crypto/bcrypt

用法示例:

import "golang.org/x/crypto/bcrypt"

func clear(b []byte) {
    for i := 0; i 

这将产生类似于以下内容的输出:

$2a$10$sylGijT5CIJZ9ViJsxZOS.IB2tOtJ40hf82eFbTwq87iVAOb5GL8e

2.使用 pbkdf2

对于使用 pbkdf2 的简单哈希:

import "golang.org/x/crypto/pbkdf2"

func HashPassword(password, salt []byte) []byte {
    defer clear(password)
    return pbkdf2.Key(password, salt, 4096, sha256.Size, sha256.New)
}

pass := []byte("foo")
salt := []byte("bar")

fmt.Printf("%x\n", HashPassword(pass, salt))
最新教程 更多>
  • 如何优化 MySQL 索引性能以加快查询速度?
    如何优化 MySQL 索引性能以加快查询速度?
    优化MySQL索引性能要有效检查MySQL索引的性能,可以使用以下查询:EXPLAIN EXTENDED SELECT col1, col2, col3, COUNT(1) FROM table_name WHERE col1 = val GROUP BY col1 ORDER BY col...
    编程 发布于2024-11-08
  • 如何在 PHP 中将数据添加到文件中?
    如何在 PHP 中将数据添加到文件中?
    PHP 中的文件追加与前置在 PHP 中使用“a”(append ) 模式。然而,写入文件的开头需要更细致的方法。在所描述的场景中,“r”模式(读写)允许添加数据,但会覆盖以前的内容。为了避免这种限制,需要更复杂的技术。使用 file_put_contents() 的解决方案该解决方案涉及将 fil...
    编程 发布于2024-11-08
  • 为什么在 C++ 中打印函数名称会导致“1”?
    为什么在 C++ 中打印函数名称会导致“1”?
    在不调用的情况下计算函数:解开谜团想象一下:您正在编码,而不是调用带括号的函数,您只需打印它的名称即可。令人惊讶的是,结果总是 1。这种非常规的方法让您感到困惑,无论是关于 1 还是缺少预期的函数指针。让我们深入研究代码的复杂性:#include <iostream> using nam...
    编程 发布于2024-11-08
  • 软件开发中的左移测试:完整指南
    软件开发中的左移测试:完整指南
    左移测试是一种旨在通过将测试流程移至开发生命周期的早期,在问题升级之前解决问题来提高软件质量的策略。传统上,测试是在开发周期即将结束时进行的,但这通常会由于较晚发现缺陷而导致更高的成本和更长的时间。通过“左移”,团队旨在及早预防问题,培养主动而非被动的质量保证方法。 随着敏捷和 DevOps 方法...
    编程 发布于2024-11-08
  • Infusion 文档生成 CLI 工具
    Infusion 文档生成 CLI 工具
    Infusion 是一个开源工具,用于在代码文件中生成文档。它使用OpenAI gpt-4模型来编写注释。这是我的项目,我用 Python 编写的。 GitHub 链接: https://github.com/SychAndrii/infusion explainer.js 是一个开源工具,用于解释...
    编程 发布于2024-11-08
  • 掌握 Python 命令行界面 (CLI):综合指南
    掌握 Python 命令行界面 (CLI):综合指南
    介绍 Python 因其多功能性和易用性而广为人知,尤其是在构建命令行界面 (CLI) 应用程序时。无论您是想自动执行日常任务、构建开发人员工具还是创建灵活的脚本,Python 丰富的生态系统都提供了各种库来有效处理 CLI。 在这篇博文中,我们将深入探讨如何使用 Python 中...
    编程 发布于2024-11-08
  • 如何在 Pandas 中基于 If-Else-Else 条件创建列?
    如何在 Pandas 中基于 If-Else-Else 条件创建列?
    在 Pandas 中使用 If-Else-Else 条件创建列根据 if-elif-else 条件创建新列,主要有两种方法:非矢量化方法此方法涉及定义一个对行进行操作的函数:def f(row): if row['A'] == row['B']: val = 0 el...
    编程 发布于2024-11-08
  • 为什么我使用 Bootstrap Modals 会收到“TypeError: $(...).modal is Not a Function\”?
    为什么我使用 Bootstrap Modals 会收到“TypeError: $(...).modal is Not a Function\”?
    TypeError: $(...).modal is Not a Function with Bootstrap Modal问题当动态插入 Bootstrap 模态到另一个视图的 HTML,您可能会遇到以下错误: TypeError: $(...).modal is not a function。此...
    编程 发布于2024-11-08
  • 如何修复 cURL 错误 35:“SSL/TLS 握手中出现问题”?
    如何修复 cURL 错误 35:“SSL/TLS 握手中出现问题”?
    使用 cURL 解决 SSL/TLS 握手问题遇到臭名昭著的 cURL 错误 35,“SSL/TLS 握手中某处出现问题,”可能会令人沮丧。此错误消息表明即使 cURL 与 HTTP 协议完美配合,在 HTTPS 请求期间建立安全连接也存在困难。尝试的一种常见解决方案是将 CURLOPT_SSL_V...
    编程 发布于2024-11-08
  • 如何掌握 MERN 堆栈:全栈开发人员指南
    如何掌握 MERN 堆栈:全栈开发人员指南
    MERN 堆栈(MongoDB、Express.js、React.js、Node.js)已成为全栈 Web 开发最流行的技术之一。作为一名开发人员,学习 MERN 堆栈可以打开一个充满机遇的世界,并让您走上构建强大的动态 Web 应用程序的道路。以下是您如何掌握 MERN 堆栈并将您的全堆栈开发技能...
    编程 发布于2024-11-08
  • 如何确保您的 PHP 网站正确处理 UTF-8 编码?
    如何确保您的 PHP 网站正确处理 UTF-8 编码?
    确保您的 PHP 网站进行全面的 UTF-8 处理要针对 UTF-8 编码优化您的 PHP 网站,建议执行几个关键步骤.启用相关扩展:mbstring: 提供对多字节字符串的支持,包括编码转换和字符串操作。PHP配置(php.ini):default_charset:设置为“utf-8”确保默认输出...
    编程 发布于2024-11-08
  • 为什么我的 MySQL 查询在 PHP 中返回“资源 id #6”?
    为什么我的 MySQL 查询在 PHP 中返回“资源 id #6”?
    在 PHP 中回显 MySQL 响应的资源 ID #6在 PHP 中使用 MySQL 扩展查询数据库时,您可能会遇到“Resource id #6”输出而不是预期结果。发生这种情况是因为查询返回资源,而不是字符串或数值。回显结果要显示预期结果,您必须首先使用以下命令获取数据提供的获取函数之一。其中一...
    编程 发布于2024-11-08
  • (SQL 查询)Express.js 中的缓存与索引
    (SQL 查询)Express.js 中的缓存与索引
    开发者您好,这是我在这个平台上的第一篇文章! ? 我想分享我在 Express.js 和 SQL 方面的令人惊讶的体验。我是一名初学者开发人员,在为我的项目开发 API 时,我每天处理超过 20 万个 API 请求。最初,我使用 Express.js API 设置了一个 SQLite 数据库(约 4...
    编程 发布于2024-11-08
  • 以下是一些适合您文章内容的基于问题的标题:

* 如何为 Spring Boot 应用程序配置上下文路径?
* 如何使用自定义 Con 访问我的 Spring Boot 应用程序
    以下是一些适合您文章内容的基于问题的标题: * 如何为 Spring Boot 应用程序配置上下文路径? * 如何使用自定义 Con 访问我的 Spring Boot 应用程序
    如何向 Spring Boot 应用程序添加上下文路径Spring Boot 提供了一种简单的方法来设置应用程序的上下文根,允许它通过 localhost:port/{app_name} 访问。操作方法如下:使用应用程序属性:在 src/main/resources 目录中创建一个 applicat...
    编程 发布于2024-11-08
  • 代码日数:高级循环
    代码日数:高级循环
    2024 年 8 月 30 日星期五 我目前正在学习 Codecademy 全栈工程师路径的第二门课程。我最近完成了 JavaScript 语法 I 课程,并完成了 JavaScript 语法 II 中的数组和循环作业。接下来是对象、迭代器、错误和调试、练习和三个挑战项目。 今天的主要亮点是学习对我...
    编程 发布于2024-11-08

免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。

Copyright© 2022 湘ICP备2022001581号-3