我开源了一个加密算法仓库,支持18种算法!登录注册业务可用!

文章目录

    • 仓库地址
    • 介绍
    • 安装
    • 用法
      • SHA512
      • HMAC
      • Bcrypt
      • Scrypt
      • AES
      • RSA
      • ECC

仓库地址

仓库地址:https://github.com/palp1tate/go-crypto-guard

欢迎starfork

介绍

此存储库包含用 Go 编写的全面的密码哈希库。该库支持多种哈希算法,它允许可定制的盐长度、迭代、键长度和算法选择。这个开源项目旨在为开发人员提供一个多功能的工具,用于安全的密码存储和验证。

支持的算法:

  • SHA512
  • SHA384
  • SHA256
  • SHA1
  • Md5
  • HMAC
  • Argon2
  • Bcrypt
  • Scrypt
  • Blake2b
  • Blake2s
  • AES
  • DES
  • 3DES
  • RSA
  • RC4
  • Blowfish
  • ECC

一些加密过后的密码格式与Django内置的加密算法格式相同:

<algorithm>$<iterations>$<salt>$<hash>

其他可能的格式:

<algorithm>$<hash>

安装

go get -u github.com/palp1tate/go-crypto-guard 

用法

SHA512

// SHA512 使用 PBKDF2 和 SHA-512 对密码进行加密。
// 它接受密码、盐长度、密钥长度和迭代次数作为输入。如果你传入一个无效的值,函数将采取默认值。
// 它生成一个盐,使用 PBKDF2 和 SHA-512 派生一个密钥,并返回加密的密码。
// 密码的格式:<algorithm>$<iterations>$<salt>$<hash>
//pbkdf2_sha512$100$40fde046f66c1d9e55b4435d$1fdd34c50a98e576b612d66be507f019password := "12345678"
encodedPassword, _ := pwd.GenSHA512(password, 12, 16, 100)
ok, _ := pwd.VerifySHA512(password, encodedPassword)

SHA384、 SHA256、 SHA1、 Md5和 Argon2的用法与 SHA512相同.

HMAC

// HMAC 使用 HMAC 和 SHA-256 对密码进行加密。
// 它接受密码和盐长度作为输入。
// 它生成一个盐,使用盐和 SHA-256 计算密码的 HMAC,并返回加密的密码。
// 密码的格式:<algorithm>$<salt>$<hash>
//hmac$3bf4e2c1a9ed54575d0d1f937eb363ab$a6ed73f8fe48867db2bd58c69ebe6c0fb91ecdd8147c4352fecf018d07cb4f43password := "12345678"
encodedPassword, _ := pwd.GenHMAC(password, 16)
ok, _ := pwd.VerifyHMAC(password, encodedPassword)

Bcrypt

// Bcrypt 使用 Bcrypt 哈希函数对密码进行加密。
// 它接受一个密码作为输入,使用 Bcrypt 的默认成本从密码生成一个哈希,并返回加密的密码。
// 密码的格式:<algorithm>$<hash>
//bcrypt$243261243130246769545174546869684f565835616a694a4e3578432e6e387a4c426451526932692e443067756758334a436d3532717365784e5661password := "12345678"
encodedPassword, _ := pwd.GenBcrypt(password)
ok, _ := pwd.VerifyBcrypt(password, encodedPassword)

对 Blake2b、 Blake2s 的使用与对 Bcrypt 的使用相同.

Scrypt

// Scrypt 使用 Scrypt 密钥派生函数对密码进行加密。
// 它接受一个密码、盐长度和密钥长度作为输入。
// 它生成一个盐,使用 Scrypt 和提供的参数派生一个密钥,并返回加密的密码。
// 密码的格式:<algorithm>$<salt>$<hash>
//scrypt$679a0a3c8336a9ff36b809862e7d494c$c4cec5ca742fa984045457f76d217acf245f032251c6a3952c4d68e1cba4a488password := "12345678"
encodedPassword, _ := pwd.GenScrypt(password, 16, 32)
ok, _ := pwd.VerifyScrypt(password, encodedPassword)

AES

// AES 使用 AES 加密算法对密码进行加密。
// 它接受一个密码和一个 AES 密钥作为输入。
// 它从 AES 密钥创建一个新的密码块,对密码应用 PKCS7 填充,并使用 CBC 模式加密密码。它返回加密的密码。
// 密码的格式:<algorithm>$<hash>
// aes$BhV9oJiePwpsEwDWizJoCA==password := "12345678"
//aes key的长度必须为32
aesKey := "palpitateabcdefghijklmn123456789"
encodedPassword, _ := pwd.GenAES(password, aesKey)
ok, _ := pwd.VerifyAES(password, encodedPassword, aesKey)

DES、ThreeDES、RC4和Blowfish的使用与Bcrypt相同,对于DES,desKey的长度必须为8。对于ThreeDES,threeDesKey的长度必须为24。rc4Key和BlowfishKey的长度没有限制,但对于Blowfish,密码的长度必须为8。

RSA

// GenRSAKey 生成一对 RSA 密钥并将它们保存到文件中。 
// 它接受密钥的位数作为输入。推荐使用 2048 或 4096。 
// 它生成一个私钥和一个公钥,并分别将它们写入 “privateKey.pem” 和 “publicKey.pem”。// RSA 使用 RSA 加密算法对密码进行加密。 
// 它接受一个密码和公钥文件的路径作为输入。 
// 它从文件中读取公钥,使用 RSA 和 PKCS1v15 填充对密码进行加密,并返回加密的密码。 
// 密码的格式:<algorithm>$<hash> 
//rsa$3p1+X80iFIDtwtKOQFjXm+deyv+cxkEIbpXuwXcqbcCvean6zyWvcrogQtDj2MkYOE2ScHpARR93RYxs3y+RXetKAHhrDqWURYcyJwuTwShBmR4hz+3WkFzhqm44IgPdlgdt70uO7TXx6fj1WmUTsZpNDTF/WNdEUO7Rzc8wahYBcnMOnPgUXrnUCYRSX7OBjuLwThnd9FTgh8CdaqESHWh6UPgkj9xz3G2uRplx2Tae0Pbsk8vQTuJXsqT//Q8yoC+ELo+5S6wTE6H8AMBdgvJgNHzFDldQD8UsZ7Ta/u2uF/joHwBA6V6IS4+1ithspE9ceJZCBWo2Cj6fMIbvjg==// 在你可以加密密码之前,你必须先生成一对密钥。这个函数只能被调用一次,记住在验证密码时需要相同的密钥对。_ = pwd.GenRSAKey(2048)	//只需要执行一次就可以注释掉
password := "12345678"
encodedPassword, _ := pwd.GenRSA(password, "publicKey.pem")
ok, _ := pwd.VerifyRSA(password, encodedPassword, "privateKey.pem")

ECC

// ECC 使用 ECC 加密算法对密码进行加密。
// 它接受一个密码和一个私钥作为输入。
// 它计算密码的 SHA-256 摘要,使用私钥对摘要进行签名,并返回加密的密码。
// 密码的格式:<algorithm>$<hash>
//ecc$BQOoQvBhRHKi9GsV0qpPiyMJ5hRwdiXlQL7CcMsPCo1GvIomtb8xzjNnmq7RNRWmS9AKXo+i0Cg4fmAdLeCN8w==password := "12345678"
privateKey, _ := ecdsa.GenerateKey(elliptic.P256(), rand.Reader)
encodedPassword, _ := pwd.GenECC(password, privateKey)
publicKey := privateKey.PublicKey
ok, _ := pwd.VerifyECC(password, encodedPassword publicKey)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/90333.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

在使用v-for时,为什么要加key

在Vue中&#xff0c;v-for 是一个强大的指令&#xff0c;用于循环渲染列表数据。然而&#xff0c;当你使用 v-for 渲染列表时&#xff0c;经常会遇到一个重要的问题&#xff1a;为什么一定要为每个循环项指定一个 key 属性&#xff1f;这篇博文将深入探讨这个问题&#xff0c;从…

前端监控日志产品

前言 流量分析的监控有&#xff1a;百度统计、谷歌分析、GrowingIo、友盟 错误统计的监控有&#xff1a;sentry、fundebug、frontJs、岳鹰 前端监控产品&#xff1a;OneApm、听云 开源的&#xff1a;logan web、Matomo PS&#xff1a;加粗的是博主用过的&#xff0c;sentr…

国庆周《Linux学习第二课》

Linux开篇指南针环境安装(第一课)-CSDN博客 Linux详细的环境安装介绍在上面 第一 环境准备过程 安装过程

Python绘图系统22:实现系统菜单

文章目录 文件菜单子部件开关 Python绘图系统&#xff1a; 前置源码&#xff1a; Python打造动态绘图系统&#x1f4c8;一 三维绘图系统 &#x1f4c8;二 多图绘制系统&#x1f4c8;三 坐 标 轴 定 制&#x1f4c8;四 定制绘图风格 &#x1f4c8;五 数据生成导入&#x1f4c8;…

消息认证的算法 Message Authentication Code 介绍

消息认证码&#xff08;Message Authentication Code&#xff0c;MAC&#xff09;是一种用于验证消息完整性和真实性的密码学算法。MAC通常与密钥一起使用&#xff0c;以确保接收方可以验证消息未被篡改或伪造。以下是MAC的一些重要特点和常见算法&#xff1a; 特点&#xff1…

React antd Table点击下一页后selectedRows丢失之前页选择内容的问题

一、问题 使用了React antd 的<Table>标签&#xff0c;是这样记录选中的行id与行内容的&#xff1a; <TabledataSource{data.list}rowSelection{{selectedRowKeys: selectedIdsInSearchTab,onChange: this.onSelectChange,}} // 表格是否可复选&#xff0c;加 type: …

uni-app打包iOS ipa文件后不上架App store为用户提供下载解决过程记录

写在前面&#xff0c;itms-services协议是什么 itms-services协议是苹果提供的一种让iOS应用在用户设备上无线安装或升级的协议。 具体来说: itms-services表示iOS应用无线安装服务的URL方案,格式为:itms-services://?actiondownload-manifest&urlMANIFEST_URL其中MANIF…

26661-2011 SWP大型十字轴式万向联轴器

声明 本文是学习GB-T 26661-2011 SWP大型十字轴式万向联轴器. 而整理的学习笔记,分享出来希望更多人受益,如果存在侵权请及时联系我们 1 范围 本标准规定了SWP 大型十字轴式万向联轴器(以下简称大型万向联轴器)的型式、基本参数与尺 寸&#xff0c;技术要求&#xff0c;检验…

LVGL - RV1109 LVGL UI刷新效率优化-02

说明 前面好早写过一个文章&#xff0c;说明如何把LVGL移到RV1109上的操作&#xff0c;使用DRM方式&#xff01;但出现刷新效率不高的问题&#xff01; 因为一直没有真正的应用在产品中&#xff0c;所以也就放下了&#xff01; 最近开发上需要考虑低成本&#xff0c;低内存的…

day45 数据库sql语句总结

一、加密算法 md5(str) 最经典&#xff0c;做常用的加密方式 1. 创建数据表usercreate table user(id int primary key auto_increment,name varchar(30),password varchar(50)); 2. 在user中插入数据insert into user values(null,兰博文,358972);insert into user values(nul…

Vovsoft Text Edit Plus 专业文本编辑器工具软件:简洁高效的创作利器

作为一名专业软件评测人员&#xff0c;我有幸使用了一款备受赞誉的文本编辑器工具软件——Vovsoft Text Edit Plus。在这篇评测中&#xff0c;我将客观、细致地分析它的实用性和使用场景&#xff0c;同时揭示它的优缺点&#xff0c;帮助您更好地了解这款软件。 第一部分&#x…

Java集成Onlyoffice以及安装和使用示例,轻松实现word、ppt、excel在线编辑功能协同操作,Docker安装Onlyoffice

安装Onlyoffice 拉取onlyoffice镜像 docker pull onlyoffice/documentserver 查看镜像是否下载完成 docker images 启动onlyoffice 以下是将本机的9001端口映射到docker的80端口上&#xff0c;访问时通过服务器ip&#xff1a;9001访问&#xff0c;并且用 -v 将本机机/data/a…

【AI视野·今日Robot 机器人论文速览 第四十二期】Wed, 27 Sep 2023

AI视野今日CS.Robotics 机器人学论文速览 Wed, 27 Sep 2023 Totally 48 papers &#x1f449;上期速览✈更多精彩请移步主页 Interesting: &#x1f4da;***Tactile Estimation of Extrinsic Contact,基于触觉的外部接触估计与稳定放置 (from 三菱电机) &#x1f4da;充气型…

Visual Studio 2017 安装

C自学精简实践教程 目录(必读) 这篇文章会保证你第一次安装VS2017就成功运行Hello World! 下载Visual Studio Installer Gitee 下载 VS2017/vs2017_Community.exe CalmReason/VisualStudio - 码云 - 开源中国 (gitee.com) 百度云下载 链接&#xff1a;https://pan.baidu…

照片后期处理软件DxO FilmPack 6 mac中文说明

DxO FilmPack 6 for Mac是一款照片后期处理软件。它可以模拟超过60种著名胶片品牌和类型的色彩和颗粒感&#xff0c;使照片具有复古、艺术和时尚风格。 ​DxO FilmPack 6 mac支持RAW和JPG格式的照片&#xff0c;并提供丰富的调整选项&#xff0c;如亮度、对比度、曝光、阴影和高…

macOS 下 Termius 中文显示为乱码

&#x1f468;&#x1f3fb;‍&#x1f4bb; 热爱摄影的程序员 &#x1f468;&#x1f3fb;‍&#x1f3a8; 喜欢编码的设计师 &#x1f9d5;&#x1f3fb; 擅长设计的剪辑师 &#x1f9d1;&#x1f3fb;‍&#x1f3eb; 一位高冷无情的编码爱好者 大家好&#xff0c;我是 DevO…

【python+appium】自动化测试

pythonappium自动化测试系列就要告一段落了&#xff0c;本篇博客咱们做个小结。 首先想要说明一下&#xff0c;APP自动化测试可能很多公司不用&#xff0c;但也是大部分自动化测试工程师、高级测试工程师岗位招聘信息上要求的&#xff0c;所以为了更好的待遇&#xff0c;我们还…

react+IntersectionObserver实现页面丝滑帧动画

实现效果&#xff1a; 加入帧动画前&#xff1a; 普通的静态页面 加入帧动画后&#xff1a; 可以看到&#xff0c;加入帧动画后&#xff0c;页面效果还是比较丝滑的。 技术实现 加入animation动画类 先用 **scss **定义三种动画类&#xff1a; .withAnimation {.fade1 {ani…

B树和B+树的介绍和对比,以及MySQL为何选择B+树

在计算机科学中&#xff0c;B树和B树是常用的数据结构&#xff0c;用于在大规模数据集上进行高效的插入、删除和查找操作。它们在数据库管理系统、文件系统等许多实际应用中发挥着重要作用。本文将深入介绍B树和B树的结构特点、实际应用方面以及它们的优缺点&#xff0c;并最后…

【Java 进阶篇】MySQL约束详解

在数据库中&#xff0c;约束是一种用于定义表中数据规则和完整性的规范。它们用于确保数据的一致性和准确性。MySQL支持多种类型的约束&#xff0c;本文将详细介绍这些约束的种类和用法。 1. 什么是约束&#xff1f; 约束是一组规则&#xff0c;它们用于定义表中数据的规范&a…