密码学-hash加密

2023-11-14

以下代码分别为乘法hash,sha256,md5,ripemd160的使用方法:

package main

import (
    "fmt"
    "crypto/sha256"
    "os"
    "io"
    "crypto/md5"
    "encoding/hex"
    "golang.org/x/crypto/ripemd160"
)

func main() {
    //通过乘法hash对"hello world"进行加密
    fmt.Println(bernstein("hello world"))

    Mysha256()

    MyIOSha256()

    MyMd5()

    MyRipemd160()
}
//乘法hash方法
func bernstein(key string) int {
    hash := 0
    var i int
    for i = 0; i < len(key); i++ {
        hash = 33*hash + int(key[i])
    }
    return hash
}

//调用自带的sha256库
func Mysha256() {
    fmt.Println("sha256--------------------------------")
    sum := sha256.Sum256([]byte("hello world"))
    fmt.Printf("%x\n", sum)
    //第二种调用方法
    h := sha256.New()
    h.Write([]byte("hello world"))
    fmt.Printf("%x\n", h.Sum(nil))
}

//将文件中的内容进行加密
func MyIOSha256() {
    //mac下要写绝对路径
    f, _ := os.Open("/Users/liuyang/gocode/src/MyHash/text.txt")
    defer f.Close()
    h := sha256.New()
    io.Copy(h, f)
    fmt.Printf("%x\n", h.Sum(nil))
}

//调用go环境中自带的md5
func MyMd5() {
    fmt.Println("MD5--------------------------------")
    data := []byte("hello world")
    //第一种方式
    s := fmt.Sprintf("%x", md5.Sum(data))
    fmt.Println(s)

    //第二种方式
    h := md5.New()
    h.Write(data)
    //十六进制转字符串
    s = hex.EncodeToString(h.Sum(nil))
    fmt.Println(s)
}

//ripemd160,利用hash原理,实现加密
func MyRipemd160()  {
    fmt.Println("Ripemd160--------------------------------")
    hasher:=ripemd160.New()
    hasher.Write([]byte("hello world"))
    hashString:=fmt.Sprintf("%x",hasher.Sum(nil))
    fmt.Println(hashString)
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

密码学-hash加密 的相关文章

  • 将“String”转换为 c# .net 中 MD5“String”的 Base64 编码

    如何将我的密码 字符串 转换为 MD5 字符串 的 Base64 编码 就像这个字符串 password to X03MO1qnZdYdgyfeuILPmQ 请在这里帮助我 或者只是让我知道如何转换这个技术 password to X03M
  • NodeJS“加密”哈希似乎产生与 Crypto-JS javascript 库不同的输出

    我正在使用 NodeJS 的捆绑包crypto http nodejs org api crypto html crypto class hash服务器端 SHA256 哈希模块 在客户端 我使用一个名为的 javascript 库Cryp
  • md5 哈希冲突。

    如果从 1 数到 X 其中 X 是第一个与前一个数字发生 md5 冲突的数字 那么 X 是哪个数字 我想知道如果我使用 md5 作为序列号 在发生冲突之前我可以期望能够枚举多少个单元 Theoretically you can expect
  • 与 6 位随机字母数字代码发生冲突的概率是多少?

    我使用以下 Perl 代码生成随机字母数字字符串 仅限大写字母和数字 用作 MySQL 数据库中记录的唯一标识符 数据库的行数可能会保持在 1 000 000 行以下 但实际的绝对最大值约为 3 000 000 行 我是否有 2 条记录具有
  • 是否存在可以保证哈希算法唯一的情况?

    如果我使用字节大小大于数据 例如 sha 256 的哈希算法对大小受限的类似数据 例如社会安全号码 进行哈希处理 哈希是否能保证与数据具有相同级别的唯一性 原始数据 哈希冲突的概率与输入字符串的大小无关 除非它指示需要多少个输入来保持唯一性
  • 当我使用加盐 CRYPT_MD5 加密我的密码时,正在加密什么?

    对字符串使用 md5 总是会产生字母数字加密结果 即 没有符号 然而 当我使用 php crypt 函数 特别是带有盐的 CRYPT MD5 并且它已打开 我已经检查过 时 它返回的假定 md5 哈希看起来不像 md5 哈希 例如 如果我
  • 如果计算的哈希码超过整数最大限制,会发生什么?

    这是 Java HashTable 类的 hashCode 实现 如果哈希表中的元素数量很大并且哈希码超过 INTEGER MAX LIMIT 2 147 483 648 到 2 147 483 647 该怎么办 我假设 hashCodes
  • 不同文件大小的哈希冲突与相同文件大小的哈希冲突的可能性相同吗?

    我对大量文件进行哈希处理 为了避免哈希冲突 我还存储了文件的原始大小 这样 即使存在哈希冲突 文件大小也不太可能相同 这是听起来的声音吗 哈希冲突同样可能是任何大小 还是我需要另一条信息 如果冲突更有可能与原始长度相同 或者 更一般地说 无
  • 从 HoA 值中获取独特元素并打印

    我有一个 HoA 其中包含某些值 我只需要 HoA 中的独特元素 预期结果 Key 1 Element ABC DEF Key 2 Element XYZ RST Key 3 Element LMN 下面是我的脚本 usr bin perl
  • 检测重复文件

    我想检测目录树中的重复文件 当发现两个相同的文件时 将仅保留其中一个重复文件 并删除其余的重复文件以节省磁盘空间 重复是指具有相同内容的文件 但文件名和路径可能不同 我正在考虑为此目的使用哈希算法 但不同的文件有可能具有相同的哈希值 因此我
  • 保序最小完美哈希函数

    我想用 C 为字典中的单词实现 OPMPH 函数 我该怎么做 Thanks 你看过这些论文吗 http dx doi org 10 1016 0020 0190 92 90220 P http dx doi org 10 1016 0020
  • Django pbkdf2_sha256 JS 实现

    我有一个来自 django 的数据库 我想从 Node js 中使用它 我有一个任务 验证用户身份 从数据库可知 算法 pbkdf2 sha256 salt 10000 次迭代和 base64 编码的哈希值 我必须在 JS 中执行哪些步骤才
  • 如何添加到 Ruby 中的现有哈希

    关于添加一个key gt value与 Ruby 中现有的填充哈希配对 我正在学习 Apress 的 Beginning Ruby 并且刚刚完成了哈希章节 我试图找到最简单的方法来使用哈希实现与数组相同的结果 x 1 2 3 4 x lt
  • 如何为 bcrypt.hashpw 设置盐?

    salt yhnqazolr123098765 password bcrypt hashpw password salt repeatpassword bcrypt hashpw repeatpassword salt 我在第二行遇到错误
  • 如何 md5 所有列(无论类型如何)

    我想创建一个 sql 查询 或 plpgsql 它将 md5 所有给定的行 无论类型如何 但是 在下面 如果 1 为空 则哈希为空 UPDATE thetable SET hash md5 accountid accounttype cre
  • 如何使用 JNDI 和 Digest-MD5 对 LDAP 进行身份验证

    我正在尝试使用 DIGEST MD5 加密对 LDAP 服务器进行身份验证 使用简单加密时 它工作得很好 但由于显而易见的原因 我无法通过网络以纯文本形式发送密码 奇怪的是 在使用 Softerra LDAP 浏览器时 我可以使用 Dige
  • 如何按键中的值对 Redis 哈希进行排序

    Redis 有没有一种好方法来获取按值排序的哈希中的键 我查看了文档 但没有找到直接的方法 另外有人可以解释一下redis中的排序是如何实现的 以及什么吗 本文档 http redis io commands SORT using hash
  • .NET 中是否有内置函数可以对密码进行哈希处理?

    我看到这个问题加密 散列数据库中的纯文本密码 https stackoverflow com questions 287517 encrypting hashing plain text passwords in database 我知道我
  • 根据插入顺序迭代哈希?

    不想对条目进行排序 使用它也不会保留顺序 foreach my val keys hash 默认情况下 Perl 5 中的哈希值是无序的 您可以使用tie http perldoc perl org functions tie html a
  • 在perl中更改多维哈希的第一个键

    我在 perl 中有一个多维哈希 我想更改所选值的第一个键 例如 我有哈希 my Hash1 Hash1 1 12 1 Hash1 1 10 1 Hash1 2 31 1 Hash1 3 52 1 Hash1 3 58 1 Hash1 4

随机推荐

  • 卷积神经网络(Convolutional Neural Network)总结

    转自 http blog sina com cn s blog 870a639201019pee html 相关网站 CNNs应用的最成功的一个例子 Yann LeCun 曾经是Hinton组的research associate http
  • 第六章 生命周期和 Ajax 服务端通信

    6 1 Vue 实例生命周期 6 1 1 生命周期钩子函数 每个 Vue 实例在被创建时都要经过一系列的初始化过程 生命周期分为三大阶段 初始化显示 更新显示 销毁Vue实例 初始化阶段的钩子函数 beforeCreate 实例创建前 数据
  • Qt中QObject::sender()的用法

    当某一个Object emit一个signal的时候 它就是一个sender 系统会记录下当前是谁emit出这个signal的 所以你在对应的slot里就可以通过 sender 得到当前是谁invoke了你的slot 对应的是QObject
  • WebRTC学习记录(2):播放音频文件原理一探

    同样的 根据上篇WebRTC学习记录 1 采集microphone到文件原理实践 讲解 我还是需要有一个可运行的例子 经过多方研究 得到如下的例子 include webrtc base ssladapter h include webrt
  • C++中的引用

    引用的概念 引用可以看作一个已定义变量的别名 引用的语法 Type name var 普通引用在声明时必须用其它的变量进行初始化 声明时必须初始化 引用的使用举例 a和b指代的都是同一段内存空间 程序输出的结果 a 5 b 5 a和b的地址
  • vue动图加载图片不能正确显示的解决方法

    vue动图加载图片不能正确显示的解决方法 解决核心 代码 运行结果 上次解决过一次 没有记录 后来发现有小伙伴问我这个问题 我今天就顺手记录一下 具体的原因我这里就不详细说 加载不出来简略的原因是vue简析地址时候把你原的地址当做了一个模块
  • jupyter notebook快捷键

    Jupyter Notebook的快捷键包括 Ctrl Enter 运行当前单元格 Shift Enter 运行当前单元格并转到下一个单元格 Alt Enter 运行当前单元格并在下面插入新单元格 Ctrl S 保存文件 Ctrl Z 撤消
  • 回调函数

    单线程的时候同步的话 很容易阻塞在那边 用户体验极差 例如 异步是可以多线程的 因为UI主线程一旦阻塞整个界面就卡死了 一旦异步 两个线程下一个可以后台处理数据 一个可以做UI显示 js是单线程的 如果所有的操作 ajax 获取文件等I O
  • mmsegmentaion环境配置cuda11.0+pytorch1.7.1

    参考 https blog csdn net CSDNxiaoh article details 125321921 官方文档 https gitcode net mirrors open mmlab 1 创建虚拟环境 conda crea
  • LVGL-tileview控件

    控件特点 以page为基础扩展的控件 增加了释放后会有动画定格效果 lv tileview set tile act tileview ext gt act id x x move ext gt act id y y move true 切
  • 区块链-Web3.0-什么是Web3.0?

    一 什么是Web 3 0 Web 3 0 也被称为 去中心化Web 或 智能Web 是互联网的下一代 它使用了分布式系统技术 区块链技术和智能合约等新型技术 旨在构建一个更加去中心化 安全 透明和智能的互联网 Web 3 0 可以带来更广泛
  • 语言模型与数据集

    1 语言模型 给定文本序列x1 xT 其目的是估计联合概率p x1 xT 其应用包括做预训练模型 生成文本 给定几个词不断使用xt p xt x1 xt 1 生成后续文本 和判断多个序列中那个更常见 2 使用计数建模 N元语法 3 读取长序
  • Redis之SortedSet

    0 字符串String 1 哈希表Hash 2 列表List 3 集合Set 例子 4 有序集合SortedSet 例子myzset 5 发布 订阅Pub Sub 6 事务Transaction 7 脚本Script 8 连接Connect
  • R中设置图形参数--函数par()详解

    R有着非常强大的绘图功能 我们可以利用简单的几行代码绘制出各种图形来 但是有时候默认的图形设置没法满足我们的需要 甚至会碰到各种各样的小问题 如坐标轴或者标题出界了 或者图例说明的大小或者位置遮挡住了图形 甚至有时候默认的颜色也不能满足我们
  • 算法竞赛个人注意事项

    浅浅记录一下自己在算法竞赛中的注意事项 数据类 注意看数大小 数学库中的函数尽量加上 1 0 转成double 防止整型溢出 int型相乘如果可能溢出 乘 1LL 数据范围大于1e6 注意用快读 浮点数输入输出 少用float scanf
  • 北大肖臻老师<<区块链技术>>笔记2

    比特币的数据结构 这里着重研究一下hash pointers 哈希指针 首先普通指针只保存地址 hash指针不仅有保存地址的功能 还有保存哈希值的功能 这里保存哈希值可以用来检测数据是否被篡改 比特币中基本的数据结构是区块链 一个个块用链表
  • 如何提高少样本学习中的参数有效性以及数据有效性

    原创作者 康德 链接 https arxiv org abs 2110 06274 Github https github com microsoft LiST 本文提出一种在少样本学习情况下对大型预训练语言模型 PLMs 进行有效微调的方
  • 台式计算机BIOS怎么查,各种台式电脑主板查看硬盘开启项的流程

    进入bios设置U盘启动方法 不同的bios会有所不同 Phoenix AwardBIOS 2010年之后的电脑 1 开机按Del键进入该BIOS设置界面 选择高级BIOS设置Advanced BIOS Features 2 高级BIOS设
  • ESP32 M5 超级问卷星:轻松收集数据

    作者 默 不知不觉疫情已持续 3 年了 最近门卫王大爷很苦恼 因为领导要求所有进入单位的人员与车辆按照防疫要求进行登记 登记的内容有来访人员的车牌号 姓名 性别 体温 联系电话 被访人及其进入单位的时间 等 大爷年纪大了 有些时候记性也不太
  • 密码学-hash加密

    以下代码分别为乘法hash sha256 md5 ripemd160的使用方法 package main import fmt crypto sha256 os io crypto md5 encoding hex golang org x