首页 > 其他分享 >sha256sum文件哈希值和直接哈希字符串的哈希值不一样

sha256sum文件哈希值和直接哈希字符串的哈希值不一样

时间:2024-09-28 13:00:38浏览次数:1  
标签:文件 换行 sha256sum test 哈希 字符串 txt

例如在文件test.txt里写入

test

没有换行。

然后

sha256sum test.txt

出来的结果是

f2ca1bb6c7e907d06dafe4687e579fce76b37e4e93b7605022da52e6ccc26fd2  test.txt

但是在这个网站上
http://encode.chahuo.com/
输入test,然后以sha256方式哈希得到的结果是

9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08

两者不一致。

stat test.txt
  文件:test.txt
  大小:5         	块:8          IO 块:4096   普通文件
设备:10301h/66305d	Inode:270564      硬链接:1
权限:(0644/-rw-r--r--)  Uid:( 1000/searchstar)   Gid:( 1000/searchstar)
最近访问:2020-04-23 11:53:08.989247877 +0800
最近更改:2020-04-23 11:53:03.077686032 +0800
最近改动:2020-04-23 11:53:03.077686032 +0800
创建时间:-

会发现大小为5字节,说明linux的文件中加上了其他东西。
hexdump来看看到底加上了什么。
在这里插入图片描述
居然是0x0a,也就是\n。为了验证,用vscode打开它看看
在这里插入图片描述
末尾果然多了个换行符。把它去掉,保存。
在这里插入图片描述
文件大小变回4字节了,而且sha256sum的输出也和网站一样了。

此外,还可以尝试让sha256sum直接从stdin中读入

sha256sum -

然后输入

test<EOF>

其中EOF在linux上一般是ctrl+d。
然后得到的结果就是

9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08

与网站上的一致了。

为什么要自动加一个换行呢?

如果没有换行,那就会这样
在这里插入图片描述
自动加上了换行,就会这样
在这里插入图片描述

vim中禁用自动加换行

参考:https://stackoverflow.com/questions/1050640/vim-disable-automatic-newline-at-end-of-file
~/.vimrc中加入

set noeol
set nofixendofline

两个缺一不可,而且只有新建文件时才有用,打开已有文件时仍然不能显示出多加的那个空行。最气的是当没有最后的空行,然后又自己手动加一个,保存关闭再打开之后空行又不显示了。说好的Linux高自由度呢???

祭奠我逝去的一小时

标签:文件,换行,sha256sum,test,哈希,字符串,txt
From: https://www.cnblogs.com/searchstar/p/18437337

相关文章

  • 《 C++ 修炼全景指南:十三 》为什么你的代码不够快?全面掌控 unordered_set 和 unordere
    摘要本文深入探讨了C++标准库中的两大无序容器——unordered_set和unordered_map,从底层实现、核心操作、性能优化、实际应用等多个方面进行了全面分析。首先,文章介绍了这两种容器的基本概念,说明了它们基于哈希表实现的特点,尤其是在查找、插入和删除操作上具备常数时间......
  • Go五种字符串的拼接
    +funcmain(){s1:="hello"s2:="word"s3:=s1+s2fmt.Print(s3)//s3="helloword"}sprintfs1:="hello"s2:="word"s3:=fmt.Sprintf("%s%s",s1,s2)//s3="hell......
  • 要求实现一个函数 DoubleToStr(double a,int b,char * str),将参数 a 转化为字符串 str
    sprintf函数:sprintf(str,"%.*f",b,a);:sprintf是一个格式化输出函数,类似于printf,但它将输出写入到字符串中而不是标准输出。"%.*f":#include<stdio.h>//将双精度浮点数a转换为字符串str,小数点后保留b位voidDoubleToStr(doublea,intb,char*str){  //......
  • 【C语言标准库函数】标准输入输出函数详解2:字符串输入输出
    目录一、字符串输入函数1.1.gets函数(已废弃)1.1.1.函数简介1.1.2.注意和废弃原因1.2.fgets函数1.2.1.函数简介1.2.2.使用场景1.2.3.注意事项1.2.4.示例二、字符串输出函数2.1.puts函数2.1.1.函数简介2.1.2. 使用场景2.1.3.注意事项2.1.4.示例2.2.......
  • C# 字符串(String)的应用说明一
    一.字符串(String)的应用说明:在C#中,更常见的做法是使用 string 关键字来声明一个字符串变量,也可以使用字符数组来表示字符串。string关键字是 System.String 类的别名。 二.创建String对象的方法说明:1.通过给String 关键字定义一个字符串;2.通过使用String类构......
  • 字符串内置方法二
     isdigit 判断是否是数字 返回bool值strip:去除字符串两端的空格或者换行符应用情况举例:比如输入名字,当输入的信息前后都有空格的时候,需要要strip来清除前后空格,保留主要信息,同时重新对user赋值,释放不必要的存储  split数据分割,返回值是一个列表list  join拼......
  • 字符串内置方法一
    数据类型的内置方法:数据类型对象.方法名(参数)upper 转大写  lower转小写例:s1=HELLO WORLDs2=HELLO YUANstartswith 是否以xxx开头endswith 是否以xxx结尾......
  • Python基础04_Python字符串(下)&Python输入和输出&条件语句&循环语句&pass语句
    目录Python字符串(下)6、字符串的常用函数APIPython输入和输出1、输出 2、输入条件语句1.if2、if-else3、if-elif-else循环语句1、range函数2、for-in循环3、while循环4、循环控制break:用于 跳出 当前循环: continue:用于跳过当前迭代,继续下一次迭代:5、p......
  • C++字符串与字符数组
    在C++中,字符串和字符数组是紧密相关的概念,但它们之间也存在一些关键的区别。理解这些区别对于编写高效、安全的C++代码非常重要。字符数组字符数组是C++中用于存储字符序列的基础数据结构。它本质上是一个元素类型为char的数组,可以在声明时初始化,也可以在运行时通过赋值或函......
  • 字符串
    字符串基操常用字符串importstring#获取所有的小写字母variable=string.ascii_lowercase#abcdefghijklmnopqrstuvwxyz#获取所有的大写字母variable=string.ascii_uppercase#ABCDEFGHIJKLMNOPQRSTUVWXYZ#获取所有的小写和大写字母variable=string.ascii_......