Linux shell下计算字符串的哈希值

今天无意发现在Linux上计算md5哈希值和在MacOS不太一样:

Linux

[[email protected] ~]# echo ‘123456‘ |  md5sum
f447b20a7fcbf53a5d5be013ea0b15af  -

Mac

[[email protected] Notes]$md5  -s 123456
MD5 ("123456") = e10adc3949ba59abbe56e057f20f883e

仔细折腾一下, 原来是echo输出的字符串会默认添加一个换行符‘\n‘,
所以在Linux上计算纯字符串的hash需要以下方法:

echo -n 可以去掉换行符
[[email protected] ~]# echo -n ‘123456‘ | md5sum
e10adc3949ba59abbe56e057f20f883e  -

printf 没有换行符结尾
[[email protected] ~]# printf 123456 | md5sum
e10adc3949ba59abbe56e057f20f883e  -

tr可以删掉一个字符,如 tr -d ‘\n‘
[[email protected] ~]# echo ‘123456‘ | tr -d ‘\n‘ | md5sum
e10adc3949ba59abbe56e057f20f883e  -

原文地址:http://blog.51cto.com/ciscoexpert/2174133

时间: 2024-11-10 08:21:20

Linux shell下计算字符串的哈希值的相关文章

C# 计算字符串的哈希值(MD5、SHA)

一.关于本文 本文中是一个类库,包括下面几个函数: 1)计算32位MD5码(大小写):Hash_MD5_32 2)计算16位MD5码(大小写):Hash_MD5_16 3)计算32位2重MD5码(大小写):Hash_2_MD5_32 4)计算16位2重MD5码(大小写):Hash_2_MD5_16 5)计算SHA-1码(大小写):Hash_SHA_1 6)计算SHA-256码(大小写):Hash_SHA_256 7)计算SHA-384码(大小写):Hash_SHA_384 8)计算SHA-512

linux shell 命令获取字符串/文件的MD5值

获取字符串的MD5值: 字符串"hello"的MD5: $ echo -n 'hello'|md5sum|cut -d ' ' -f1 得到的MD5值: 5d41402abc4b2a76b9719d911017c592 命令解释: md5sum: 显示或检查 MD5(128-bit) 校验和,若没有文件选项,或者文件处为"-",则从标准输入读取. echo -n : 不打印换行符. cut:  cut用来从标准输入或文本文件中剪切列或域.剪切文本可以将之粘贴到一个文

Linux Shell编程之五字符串的处理

shell编程之字符串处理 在 shell 中,由于是一种弱类型的语言,在没有事先申明变量类型的情况下,所有的变量都是字符串.所以对字符串的处理就显得相当重要了. 下面介绍常见的对字符串处理的操作. 一.字符串切片 ${string_var:offest:length},类似于数组元素的提取. # 这里的string_var是一个变量,offest 是字符串的开始偏移量,length是切去字符串的长度 var=dhcpd:x:177:177:DHCP server:/:/sbin/nologin

Linux Shell下的后台运行及其前台的转换

当用bash启动一个程序,你可以用在程序后加&,实现程序在后台运行: 例如: emacs & 但如果你忘了输入&;但你又不想把程序停止后重新启动: 你可以这么做: 按Ctrl + Z暂停前台工作,比如前面提到的Emacs: 然后用jobs命令查看当前bash一共启动了多少程序,你可以看到你的emacs在其中,它的状态是Stoped的; 并且它的jobID也可以看,比如是2 然后用命令bg 2 这样你就可以达到和emacs &一样的效果了. 当你有些工作比如updatedb,

JS 字符串的 哈希值

在做一个小游戏的时候, 刚开始用了 随机数,  感觉很假,  输入姓名, 点击确定, 获取 随机数, 现在用了 字符串的 哈希值, 不管在哪 输入, 输入多少次, 最终的结果都是一样的. 因为 姓名   对应的 哈希值 是不变 用姓名的哈希值 与 那个 数组  求余. //获取字符串的 哈希值 function getHashCode(str,caseSensitive){ if(!caseSensitive){ str = str.toLowerCase(); } var hash = 131

java执行linux shell命令,并拿到返回值

1 package com.suning.spc.util; 2 3 import java.io.IOException; 4 import java.io.InputStream; 5 import java.nio.charset.Charset; 6 7 import org.slf4j.Logger; 8 import org.slf4j.LoggerFactory; 9 10 import ch.ethz.ssh2.ChannelCondition; 11 import ch.eth

shell下的字符串截取方法

一.Linux shell截取字符串的前几位,例截取前8位: 方法如下:下面a=1234sterrerwrwretw 1.expr substr "$a" 1 8 2.echo $a|cut -c1-8 3..echo $a|dd bs=1 count=8 二.按指定字符串截取 1.第一种方法: 1> ${val##*string} (双#*截取) 从左向右截取最后一个string后的字符串 例:a=123stringrwtw134string456 2>${varible

linux shell学习(字符串操作)--01

http://blog.csdn.net/shuanghujushi/article/details/51298672 在bash shell的使用过程中,经常会遇到一些字符串string的操作,下面是个人的一些使用总结. 一.字符串的定义 用双引号,单引号,或者直接在接在=后,都可以定义一个字符串,如下,定义了三个字符串 str1="this is a string" str2='this is a string' str3=this_is 但双引号和单引号,在bash中还是有区别的

linux SHELL下替代sed、ask的常用字符串处理(截取,判断、替换)

在学过sed.awk这类功能强大的文本流处理命令后,面对简单字符串处理,往往会忘记一种更高效简洁的方法,它就是SHELL内置的字符串处理. 1.字符串的判断与赋值. 表达式 含义 ${var} 变量var的值,,我们常用的$var就是它的缩写 ${var-DEFAULT} 如果var没有被声明, 那么就以$DEFAULT作为其值 * ${var:-DEFAULT} 如果var没有被声明, 或者其值为空, 那么就以$DEFAULT作为其值 * ${var=DEFAULT} 如果var没有被声明,