| 文件属性 | |
| 文件名称 | |
| 文件类型 | |
| 文件大小 | |
| 文件上一次修改时间 | |
| 加密类型 | MD5加密结果 |
|---|---|
| 16 位小写 | |
| 16 位大写 | |
| 32 位小写 复制结果 | |
| 32 位大写 复制结果 |
示例 #1 PHP (PHP >= 4.0.1, PHP 5, PHP 7, PHP 8) 计算字符串的 MD5 散列值。
<?php
$str = 'apple';
if (md5($str) === '1f3870be274f6c49b3e31a0c6728957f') {
echo "Would you like a green or red apple?";
}
Output of the above example in PHP 8.5.0: Would you like a green or red apple?
警告:由于此函数依赖的算法已不足够复杂,不推荐使用此函数对明文密码加密。详细内容参见 这里。
示例 #1 Go(Go >= 1.22.2)在 Go 语言中,你可以使用crypto/md5包来计算字符串的MD5哈希值。
package main
import (
"crypto/md5"
"fmt"
)
func main() {
// 要计算MD5的字符串
data := []byte("apple")
// 计算MD5哈希值
hash := md5.Sum(data)
// 将字节切片转换为十六进制字符串
fmt.Printf("%x", hash)
}
Output:1f3870be274f6c49b3e31a0c6728957f
示例 #2 Go 官方推荐使用 md5.New() 配合 Write() 和 Sum(nil) 的方式,这种方式直接返回 []byte。
package main
import (
"crypto/md5"
"fmt"
"io"
)
func main() {
// New 函数返回一个新的哈希值。该哈希值用于计算 MD5 校验和。
h := md5.New()
// 写入要计算MD5的字符串
io.WriteString(h, "apple")
// 直接返回 []byte,长度为 16
hashSlice := h.Sum(nil)
// 将字节切片转换为十六进制字符串
fmt.Printf("%x", hashSlice)
}
Output:1f3870be274f6c49b3e31a0c6728957f
使用 hex.EncodeToString() 可将[]byte安全转为小写十六进制字符串。注意它不修改原数据,返回全新字符串。
fmt.Printf("%+v\n", hex.EncodeToString(hashSlice))
MD5:计算字符串的 MD5 散列值。
MD5,SHA1 以及 SHA256 这样的散列算法是面向快速、高效进行散列处理而设计的。随着技术进步和计算机硬件的提升, 破解者可以使用“暴力”方式来寻找散列码所对应的原始数据。因为现代化计算机可以快速的“反转”上述散列算法的散列值,所以很多安全专家都强烈建议,不要在密码散列中使用这些散列算法。
MD5信息摘要算法(英语:MD5 Message-Digest Algorithm),一种被广泛使用的密码散列函数,可以产生出一个128位(16字节)的散列值(hash value),用于确保信息传输完整一致。
MD5由MD4、MD3、MD2改进而来,主要增强算法复杂度和不可逆性。MD5算法因其普遍、稳定、快速的特点,仍广泛应用于普通数据的加密保护领域。
MD5算法的原理可简要的叙述为:MD5码以512位分组来处理输入的信息,且每一分组又被划分为16个32位子分组,经过了一系列的处理后,算法的输出由四个32位分组组成,将这四个32位分组级联后将生成一个128位散列值。
警告:由于此哈希算法的快速特性,不建议使用此功能来保护密码。