MD5 字符串问题

早上来工位,大家再聊md5,无意中发现网上有个人提出个问题:研究了一下,挺有意思

有个串,通过各种办法得到的值不完全一样,下面请看细节:

假设这个字符串是 “ssss"
我用的第一个办法应该是准确的,echo -n "ssss" | md5sum 得到的结果是:
8f60c8102d29fcd525162d02eed4566b  -

第二个办法是用vim把字符串写进一个文本文件aaa. 然后用命令 md5sum aaa 得到结果是

[[email protected]]# md5sum aaa
eef088adb5dad035866534ffe27fde4c aaa

这时的结果就不对了

第三个办法还是把字符串写进一个文件,但是用命令 echo -n "ssss" > bbb。 然后用md5sum bbb 得到的结果和第一个办法一样。
8f60c8102d29fcd525162d02eed4566b  bbb
原因如下:

其实第二种,本件字符串末尾有一个换行符

用xxd aaa 可以看到

0000000: 7373 7373 0a                             ssss.

16进制0a表示换行符,故多了一个换行符的字符串md5sum不一样

时间: 2024-10-02 22:56:18

MD5 字符串问题的相关文章

MD5字符串加密Md5Parser

MD5字符串加密 package com.flyou.utils; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; public class Md5Parser { /** * md5加密方法 * * @param password * @return */ public static String md5Parser(String password) { try { // 得到

go 读取文件夹所有文件并生成md5 字符串

为文件生成MD5字符串 func CreateMd5(filename string, md5str *string) { f, err := os.Open(filename) if err != nil { fmt.Println("Open", err) return } defer f.Close() md5hash := md5.New() if _, err := io.Copy(md5hash, f); err != nil { fmt.Println("Cop

C#生成MD5字符串

using System.Security.Cryptography; using System.Text; public class MD5Helper { private static MD5 md5 = MD5.Create(); //使用utf8编码将字符串散列 public static string GetMD5HashString(string sourceStr) { return GetMD5HashString(Encoding.UTF8,sourceStr); } //使用

MD5字符串加密 iOS

一个MD5的加密例子.http://code.cocoachina.com/detail/117150 使用方法: 1.把工程中的MyMD5.h和MyMD5.m文件加入你的工程中 2.在你的类中导入 #import “MyMD5.h” 3.调用MyMD5的类方法 [MyMD5 md5:@“testText”]; 自己定义个nsObject类  MyMD5.h写入一个工厂方法  +(NSString *) md5: (NSString *) inPutText ; MyMD5.m里实现这个方法 #

使用Java MD5 为文件和字符串加密

加密工具类 package com.kaige123.util; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.nio.MappedByteBuffer; import java.nio.channels.FileChannel; import java.security.MessageDigest; /** * MD5文字和文件加密<br> * http

使用python求字符串或文件的MD5

使用python求字符串或文件的MD5 五月 21st, 2008 #以下可在python3000运行. #字符串md5,用你的字符串代替'字符串'中的内容. import hashlib md5=hashlib.md5('字符串'.encode('utf-8′)).hexdigest() print(md5) #求文件md5 import hashlib #文件位置中的路径,请用双反斜杠,如'D:\\abc\\www\\b.msi' file='[文件位置]' md5file=open(fil

MD5工具类,提供字符串MD5加密、文件MD5值获取(校验)功能

MD5工具类,提供字符串MD5加密(校验).文件MD5值获取(校验)功能 : package com.yzu.utils; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.nio.ByteBuffer; import java.nio.channels.FileChannel; import java.security.MessageDigest; impor

非计算机专业的码农C#学习笔记 三、变量 表达式 字符串

三.变量常量 说在前: 其实,写这个东西的时候,我也是在复习,因为这个都是一年前的笔记了.今天我看了几章,贴上来吧.我也是求高手指点,因为变量类型很多,我真的背不出来,只有用的时候记起来或者查查资料. 为什么会这样呢?短期项目用到access,sqlserver,oracle后我开始张冠李戴了.....所以,我在学习过程,真的是抄下来,放在办公室座位前.... 变量(int Int=0) 1.值类型 (1)整型 类型 说明(二进制) 范围 Sbyte 8位有符号 -128-127 Byte 8位

【Unity3D】使用MD5值,确保本地Sqlite数据库内容没有被篡改

Sqlite的应用场景 在判断是否使用存储格式为Sqlite模式的标准,我们的标准是内容只读.也就是说,除非发布者修改Sqlite内容,玩家只有读取的权限. 换个角度说,Sqlite里面的数据都是游戏基础配置数据,比如游戏的关卡(不包括玩家取得的成就).怪物的血量.装备的模板数据 对于如何使用Sqlite,请参考我的另外一篇文章<Unity本地数据存储---Sqlite和JSON> 问题重现 OK,既然我们选择了Sqlite作为存储手段之一,那么我们也嘚重视起安全性. 以android而言,我