Bootstrap

MD5加密

什么是MD5加密

MD5(Message-Digest Algorithm 5)是一种广泛使用的哈希函数用于生成信息的固定长度(128 位,通常表示为 32 位十六进制数)“指纹”,即哈希值。这个哈希值可以唯一地代表原始数据,常用于确保数据的完整性和验证数据是否被篡改。

MD5加密的优缺点

优点

计算效率高:MD5 算法的计算效率较高,能够快速地对大量数据进行哈希处理,因此在对性能要求较高的场景中使用较为合适。

固定长度输出:无论输入数据的长度如何,MD5 始终生成 128 位(32 位十六进制字符串)的哈希值,方便存储和比较。

缺点

安全性低:MD5 已经被证明存在严重的安全漏洞,能够通过碰撞攻击(找到两个不同的输入产生相同的哈希值)来伪造数据

缺乏随机性:由于 MD5 是确定性的哈希函数,相同的输入始终会产生相同的输出

使用JavaScript和python实现MD5加密

使用JavaScript的环境为node.js和crypto-js库

这里安装crypto-js库需要在项目根目录下在终端运行命令:npm install crypto-js

安装node.js可以看这里

// 引入 crypto-js 库,该库提供了多种加密算法,这里我们将使用其中的 MD5 算法
const CryptoJS = require('crypto-js');

/**
 * 使用 MD5 算法对输入的字符串进行加密
 * @param {string} str - 需要进行 MD5 加密的原始字符串
 * @returns {string} - 经过 MD5 加密后的十六进制字符串
 */
function md5Encrypt(str) {
    // 调用 CryptoJS 的 MD5 方法对输入的字符串进行加密
    // CryptoJS.MD5(str) 返回的是一个 CryptoJS 的 WordArray 对象
    // .toString() 方法将这个 WordArray 对象转换为十六进制字符串
    return CryptoJS.MD5(str).toString();
}

// 定义一个需要进行 MD5 加密的原始字符串
const input = 'Hello, World!';

// 调用 md5Encrypt 函数对输入的字符串进行加密,并将加密结果存储在 encrypted 变量中
const encrypted = md5Encrypt(input);

// 打印原始字符串,方便查看原始输入内容
console.log(`原始字符串: ${input}`);

// 打印经过 MD5 加密后的结果,用于验证加密操作是否成功
console.log(`MD5加密结果: ${encrypted}`);

使用Python实现MD5加密

使用Python实现MD5加密需要安装hashlib库

在终端运行命令:pip install hashlib命令即可

# 导入 hashlib 模块
import hashlib

def md5_encrypt(text):
    md5 = hashlib.md5()
    # hashlib 模块中的哈希方法要求输入为字节类型
    # 所以这里将输入的字符串 text 以 UTF - 8 编码格式转换为字节类型
    # 并使用 update 方法将字节数据添加到 MD5 对象中
    md5.update(text.encode('utf-8'))
    # hexdigest 方法会返回加密后的十六进制字符串
    return md5.hexdigest()

# 需要加密的字符串
input_text = 'Hello, World!'
# 调用 md5_encrypt 函数对输入的字符串进行加密
encrypted_text = md5_encrypt(input_text)
print(f'原始字符串: {input_text}')
# 打印经过 MD5 加密后的结果,用于验证加密操作是否成功
print(f'MD5加密结果: {encrypted_text}')

;