crypto

package
v1.1.34 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 10, 2026 License: MIT Imports: 8 Imported by: 0

README

加解密算法

bcrypt

bcrypt是一个由美国计算机科学家尼尔斯·普罗沃斯(Niels Provos)以及大卫·马齐耶(David Mazières)根据Blowfish加密算法所设计的密码散列函数,于1999年在USENIX中展示[1]。实现中bcrypt会使用一个加盐的流程以防御彩虹表攻击,同时bcrypt还是适应性函数,它可以借由增加迭代之次数来抵御日益增进的电脑运算能力透过暴力法破解。

由bcrypt加密的文件可在所有支持的操作系统和处理器上进行转移。它的口令必须是8至56个字符,并将在内部被转化为448位的密钥。然而,所提供的所有字符都具有十分重要的意义。密码越强大,数据就越安全。

除了对数据进行加密,默认情况下,bcrypt在删除数据之前将使用随机数据三次覆盖原始输入文件,以阻挠可能会获得计算机数据的人恢复数据的尝试。如果您不想使用此功能,可设置禁用此功能。

具体来说,bcrypt使用美国密码学家保罗·柯切尔的算法实现。随bcrypt一起发布的源代码对原始版本作了略微改动。

bcrypt哈希由多个部分组成。这些部分用于确定创建哈希的设置,从而可以在不需要任何其他信息的情况下对其进行验证。

$2a$10$ygWrRwHCzg2GUpz0UK40kuWAGva121VkScpcdMNsDCih2U/bL2qYy
  • $2a$:Prefix 表示使用bcrypt的算法版本。
  • 10$:Cost factor 表示加密的复杂度,值越大,计算时间越长。
  • ygWrRwHCzg2GUpz0UK40kuWAGva121VkScpcdMNsDCih2U/bL2qYy:Salt 和 Hash,前22个字符是盐值,后面的字符是哈希值。

Documentation

Index

Constants

This section is empty.

Variables

View Source
var DefaultAESKey = []byte("f51d66a73d8a0927")

DefaultAESKey 默认AES密钥(16字节)

View Source
var DefaultCost = 10

DefaultCost 最小值=4 最大值=31 默认值=10

Functions

func AesDecrypt

func AesDecrypt(cryptedText, key, iv []byte) ([]byte, error)

AesDecrypt AES解密

func AesEncrypt

func AesEncrypt(plainText, key, iv []byte) ([]byte, error)

AesEncrypt AES加密

func GenerateAESKey

func GenerateAESKey(length int) ([]byte, error)

GenerateAESKey 生成AES密钥

func GenerateSalt

func GenerateSalt(length int) (string, error)

GenerateSalt 生成指定长度的盐

func HashPassword

func HashPassword(password string) (string, error)

HashPassword 加密密码

func HashPasswordWithSalt

func HashPasswordWithSalt(password, salt string) (string, error)

HashPasswordWithSalt 对密码进行加盐哈希处理

func PKCS5Padding

func PKCS5Padding(plaintext []byte, blockSize int) []byte

PKCS5Padding 填充明文

func PKCS5UnPadding

func PKCS5UnPadding(origData []byte) []byte

PKCS5UnPadding 去除填充数据

func VerifyPassword

func VerifyPassword(password, hash string) bool

VerifyPassword 验证密码是否正确

func VerifyPasswordWithSalt

func VerifyPasswordWithSalt(password, salt, hashedPassword string) bool

VerifyPasswordWithSalt 验证密码是否正确

Types

This section is empty.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL