文章851
标签121
分类10

Mysql text和blob 区别

一.相同

TEXTBLOB列的存储或检索过程中,不存在大小写转换,当未运行在严格模式时,如果你为BLOBTEXT列分配一个超过该列类型的最大长度的值值,值被截取以保证适合。如果截掉的字符不是空格,将会产生一条警告。使用严格SQL模式,会产生错误,并且值将被拒绝而不是截取并给出警告.

BLOBTEXT列不能有 默认值.

当保存或检索BLOBTEXT列的值时不删除尾部空格。(这与VARBINARYVARCHAR列相同).
对于BLOBTEXT列的索引,必须指定索引前缀的长度。对于CHARVARCHAR,前缀长度是可选的.

二.相异

text :

  1. TEXT值是大小写不敏感的
  2. TEXt被视为非二进制字符串
  3. TEXT列有一个字符集,并且根据字符集的 校对规则对值进行排序和比较
  4. 可以将TEXT列视为VARCHAR
  5. MySQL连接程序/ODBCTEXT值定义为LONGVARCHAR
  6. BLOB 可以储存图片,TEXT不行,TEXT只能储存纯文本文件。4个TEXT类型TINYTEXTTEXTMEDIUMTEXTLONGTEXT对应于4BLOB类型,并且有同样的最大长度和存储需求。

    blob:

  7. BLOB值的排序和比较以大小写敏感方式执行;
  8. BLOB被视为二进制字符串;
  9. BLOB列没有字符集,并且排序和比较基于列值字节的数值值。

在大多数方面,可以将BLOB列视为能够足够大的VARBINARY

MySQL连接程序/ODBCBLOB值定义为LONGVARBINARY

一个BLOB是一个能保存可变数量的数据的二进制的大对象。4个BLOB类型TINYBLOBBLOBMEDIUMBLOBLONGBLOB仅仅在他们能保存值的最大长度方面有所不同。

其他:

VARCHARBLOBTEXT类型是变长类型,对于其存储需求取决于列值的实际长度(在前面的表格中用L表示),而不是取决于类型的最大可能尺寸。例如,一个 VARCHAR(10)列能保存最大长度为10个字符的一个字符串,实际的存储需要是字符串的长度 ,加上1个字节以记录字符串的长度。对于字符串'abcd',L是4而存储要求是5个字节。

BLOBTEXT类型需要1,2,3或4个字节来记录列值的长度,这取决于类型的最大可能长度。VARCHAR需要定义大小,有255的最大限制;TEXT则不需要。如果你把一个超过列类型最大长度的值赋给一个BLOBTEXT列,值被截断以适合它。


  • CHAR(n) 固定长度,最多 255 个字符
  • VARCHAR(n) 可变长度,MySQL 4.1 及以前最大 255 字符,MySQL 5 之后最大 65535 字节
  • TINYTEXT 可变长度,最多 255 个字符
  • TEXT 可变长度,最多 65535 个字符
  • MEDIUMTEXT 可变长度,最多 16777215(2^24 - 1)个字符
  • LONGTEXT 可变长度,最多 4294967295(2^32 - 1)(4G)个字符

Hash HMAC 签名在 PHP、Python、Node.js 和 Java 中的使用

Hash HMAC 签名在 PHP、Python、Node.js 和 Java 中的使用

简介

Hash HMAC(Hash-based Message Authentication Code)是一种基于哈希函数和密钥的消息认证码算法,用于验证消息的完整性和真实性。在本篇博客中,我们将介绍如何在 PHP、Python、Node.js 和 Java 中生成和验证 Hash HMAC 签名。

什么是 Hash HMAC 签名?

HMAC 是一种基于哈希函数和密钥的消息认证码算法。它通过将消息与密钥进行哈希运算来生成一个固定长度的哈希值,用于验证消息的完整性和真实性。HMAC 使用一个密钥来对消息进行加密,并将加密后的结果与消息一起进行哈希运算。

在 PHP 中生成和验证 HMAC 签名

在 PHP 中,可以使用 hash_hmac 函数生成和验证 HMAC 签名。下面是一个生成和验证 HMAC 签名的 PHP 示例代码:

<?php

$data = 'Hello, World!';
$key = 'YourSecretKey';

// 生成 HMAC 签名
$signature = hash_hmac('sha256', $data, $key);

// 验证 HMAC 签名
$isValid = hash_equals($signature, hash_hmac('sha256', $data, $key));

if ($isValid) {
    echo 'HMAC signature is valid.';
} else {
    echo 'HMAC signature is invalid.';
}

在 Python 中生成和验证 HMAC 签名

在 Python 中,可以使用 hmac 模块生成和验证 HMAC 签名。下面是一个生成和验证 HMAC 签名的 Python 示例代码:

import hmac
import hashlib

data = b'Hello, World!'
key = b'YourSecretKey'

# 生成 HMAC 签名
signature = hmac.new(key, data, hashlib.sha256).hexdigest()

# 验证 HMAC 签名
isValid = hmac.compare_digest(signature, hmac.new(key, data, hashlib.sha256).hexdigest())

if isValid:
    print('HMAC signature is valid.')
else:
    print('HMAC signature is invalid.')

在 Node.js 中生成和验证 HMAC 签名

在 Node.js 中,可以使用 crypto 模块生成和验证 HMAC 签名。下面是一个生成和验证 HMAC 签名的 Node.js 示例代码:

const crypto = require('crypto');

const data = 'Hello, World!';
const key = 'YourSecretKey';

// 生成 HMAC 签名
const signature = crypto.createHmac('sha256', key).update(data).digest('hex');

// 验证 HMAC 签名
const isValid = crypto.timingSafeEqual(
    Buffer.from(signature, 'hex'),
    Buffer.from(crypto.createHmac('sha256', key).update(data).digest('hex'), 'hex')
);

if (isValid) {
    console.log('HMAC signature is valid.');
} else {
    console.log('HMAC signature is invalid.');
}

在 Java 中生成和验证 HMAC 签名

在 Java 中,可以使用 javax.crypto.Mac 类和 java.security.Key 接口生成和验证 HMAC 签名。下面是一个生成和验证 HMAC 签名的 Java 示例代码:

import javax.crypto.Mac;
import javax.crypto.spec.SecretKeySpec;
import java.security.Key;
import java.util.Arrays;

public class HmacExample {
    public static void main(String[] args) throws Exception {
        String data = "Hello, World!";
        String key = "YourSecretKey";

        // 生成 HMAC 签名
        Mac mac = Mac.getInstance("HmacSHA256");
        Key secretKey = new SecretKeySpec(key.getBytes(), "HmacSHA256");
        mac.init(secretKey);
        byte[] signature = mac.doFinal(data.getBytes());

        // 验证 HMAC 签名
        Mac macVerify = Mac.getInstance("HmacSHA256");
        macVerify.init(secretKey);
        byte[] signatureVerify = macVerify.doFinal(data.getBytes());

        boolean isValid = Arrays.equals(signature, signatureVerify);

        if (isValid) {
            System.out.println("HMAC signature is valid.");
        } else {
            System.out.println("HMAC signature is invalid.");
        }
    }
}

结论

Hash HMAC 签名是一种强大的消息认证码算法,用于验证消息的完整性和真实性。在本篇博客中,我们介绍了如何在 PHP、Python、Node.js 和 Java 中生成和验证 HMAC 签名的示例代码。根据您的需求和使用的编程语言,您可以选择适合您的方法来实现 HMAC 签名。

参考文献

请根据需要修改代码示例和参考文献,并确保引用了适当的来源。

">