SM3

SM3 是中华人民共和国密码行业标准,由国家密码管理局于 2010 年 12 月发布。 SM3 算法适用于商用密码应用中的数字签名和验证,消息认证码的生成与验证, 以及随机数的生成等。该算法对长度为 l (l < 2^64) 的消息, 经过填充和迭代压缩,生成长度为 256 位的杂凑值。

描述:
  • SM3 是中华人民共和国密码行业标准,由国家密码管理局于 2010 年 12 月发布。 SM3 算法适用于商用密码应用中的数字签名和验证,消息认证码的生成与验证, 以及随机数的生成等。该算法对长度为 l (l < 2^64) 的消息, 经过填充和迭代压缩,生成长度为 256 位的杂凑值。

源码:
自从:
  • 0.1.0
作者:
描述:
  • SM3 哈希算法实现

源码:

(require("SM3"))(data, optionsopt) → {string|Buffer}

描述:
  • 计算指定数据的 SM3 哈希值。SM3 是一种密码杂凑函数, 具有以下特点: - 输出长度固定为 256 位(32 字节) - 单向性:从哈希值无法推导出原始数据 - 雪崩效应:输入的微小变化会导致输出的巨大变化 - 抗碰撞性:难以找到两个不同的输入产生相同的哈希值

源码:
查看:
举例:
// 基本用法 - 计算字符串的 SM3 哈希值
import { sm3 } from 'jxk'

const message = 'Hello, World!'
const hash = sm3(message)
console.log(hash)
// => '44f0061e69fa6fdfc290c494654a05dc0c053da7e5c52b84ef93a9d67d3fff88'
// 使用不同的输出格式
const data = '中文测试'

// 十六进制输出(默认)
const hexHash = sm3(data, { encoding: 'hex' })
console.log(hexHash) // => '66c7f0f462eeedd9d1f2d46bdc10e4e24167c4875cf2f7a2297da02b8f4ba8e0'

// Base64 输出
const base64Hash = sm3(data, { encoding: 'base64' })
console.log(base64Hash) // => 'Zsfzxj7u7dnR8tRr3BDk4kFnxIdc8veiKX2gK49LqOA='
// 处理 Buffer 数据
const buffer = Buffer.from('Binary data', 'utf8')
const bufferHash = sm3(buffer)
console.log(bufferHash)
// => 'f7c3bc1d808e04732adf679965ccc34ca7ae3441b49bdc6502dd27e4d8c4c43'
// 用于数字签名前的消息摘要
const document = '重要合同内容...'
const digest = sm3(document)
console.log('文档摘要:', digest)
// 用于密码存储(注意:实际应用中应加盐)
const password = 'userPassword123'
const salt = 'randomSalt456'
const hashedPassword = sm3(password + salt)
console.log('密码哈希:', hashedPassword)
// 用于数据完整性校验
const fileData = 'file content...'
const checksum = sm3(fileData)
console.log('文件校验和:', checksum)
参数:
名称 类型 属性 描述
data string | Buffer

需要计算哈希的数据,可以是字符串或 Buffer 对象

options Object <optional>

哈希计算选项

Properties
名称 类型 属性 默认 描述
encoding string <optional>
'hex'

输出编码格式,可选值:'hex'、'base64'、'buffer'

inputEncoding string <optional>
'utf8'

输入数据编码格式(当 data 为字符串时)

抛出:
  • 当输入参数类型不正确时抛出错误

    类型
    TypeError
  • 当哈希计算失败时抛出错误

    类型
    Error
返回:

SM3 哈希值,格式由 options.encoding 决定

类型
string | Buffer

SM3 哈希算法实现

描述:
  • SM3 是中华人民共和国密码行业标准,由国家密码管理局于 2010 年 12 月发布。 SM3 算法适用于商用密码应用中的数字签名和验证,消息认证码的生成与验证, 以及随机数的生成等。该算法对长度为 l (l < 2^64) 的消息, 经过填充和迭代压缩,生成长度为 256 位的杂凑值。

源码:
自从:
  • 0.1.0
作者:
描述:
  • SM3 哈希算法实现

源码:

(require("SM3"))(data, optionsopt) → {string|Buffer}

描述:
  • 计算指定数据的 SM3 哈希值。SM3 是一种密码杂凑函数, 具有以下特点: - 输出长度固定为 256 位(32 字节) - 单向性:从哈希值无法推导出原始数据 - 雪崩效应:输入的微小变化会导致输出的巨大变化 - 抗碰撞性:难以找到两个不同的输入产生相同的哈希值

源码:
查看:
举例:
// 基本用法 - 计算字符串的 SM3 哈希值
import { sm3 } from 'jxk'

const message = 'Hello, World!'
const hash = sm3(message)
console.log(hash)
// => '44f0061e69fa6fdfc290c494654a05dc0c053da7e5c52b84ef93a9d67d3fff88'
// 使用不同的输出格式
const data = '中文测试'

// 十六进制输出(默认)
const hexHash = sm3(data, { encoding: 'hex' })
console.log(hexHash) // => '66c7f0f462eeedd9d1f2d46bdc10e4e24167c4875cf2f7a2297da02b8f4ba8e0'

// Base64 输出
const base64Hash = sm3(data, { encoding: 'base64' })
console.log(base64Hash) // => 'Zsfzxj7u7dnR8tRr3BDk4kFnxIdc8veiKX2gK49LqOA='
// 处理 Buffer 数据
const buffer = Buffer.from('Binary data', 'utf8')
const bufferHash = sm3(buffer)
console.log(bufferHash)
// => 'f7c3bc1d808e04732adf679965ccc34ca7ae3441b49bdc6502dd27e4d8c4c43'
// 用于数字签名前的消息摘要
const document = '重要合同内容...'
const digest = sm3(document)
console.log('文档摘要:', digest)
// 用于密码存储(注意:实际应用中应加盐)
const password = 'userPassword123'
const salt = 'randomSalt456'
const hashedPassword = sm3(password + salt)
console.log('密码哈希:', hashedPassword)
// 用于数据完整性校验
const fileData = 'file content...'
const checksum = sm3(fileData)
console.log('文件校验和:', checksum)
参数:
名称 类型 属性 描述
data string | Buffer

需要计算哈希的数据,可以是字符串或 Buffer 对象

options Object <optional>

哈希计算选项

Properties
名称 类型 属性 默认 描述
encoding string <optional>
'hex'

输出编码格式,可选值:'hex'、'base64'、'buffer'

inputEncoding string <optional>
'utf8'

输入数据编码格式(当 data 为字符串时)

抛出:
  • 当输入参数类型不正确时抛出错误

    类型
    TypeError
  • 当哈希计算失败时抛出错误

    类型
    Error
返回:

SM3 哈希值,格式由 options.encoding 决定

类型
string | Buffer