JSON的MD5

在Web開發過程中,JSON(JavaScript Object Notation)是最常用的數據格式之一。MD5(Message-Digest Algorithm 5)是一種常用的加密算法,它可以將任意長的消息壓縮到一個128位的哈希值中。那麼,如何在JSON中應用MD5呢?

一、生成JSON的MD5

生成JSON的MD5可以使用第三方庫(如hashlib),也可以自己實現。下面是一個Python實例代碼:

import json
import hashlib

def get_json_md5(data):
    json_str = json.dumps(data, sort_keys=True, ensure_ascii=False)
    md5 = hashlib.md5(json_str.encode('utf-8')).hexdigest()
    return md5

data = {
    "name": "Tom",
    "age": 20,
    "hobbies": ["reading", "music"]
}
print(get_json_md5(data))

在以上代碼中,首先將JSON數據轉換成字符串,再進行MD5加密,最後返回128位的哈希值。

二、應用場景

JSON的MD5可以應用在多個場景中。以下是其中的幾個:

1、數據傳輸完整性校驗

通過對JSON數據進行MD5加密,可以生成一個哈希值作為數據摘要,並隨數據一起傳輸。在接收方收到數據後,同樣計算一遍哈希值,並將其與原始哈希值進行比對。如果兩者相同,則說明數據傳輸沒有受到損壞或篡改。

import json
import hashlib

def get_json_with_md5(data):
    json_str = json.dumps(data, sort_keys=True, ensure_ascii=False)
    md5 = hashlib.md5(json_str.encode('utf-8')).hexdigest()
    result = {"data": data, "md5": md5}
    return json.dumps(result, sort_keys=True, ensure_ascii=False)

def verify_json_md5(json_str):
    obj = json.loads(json_str)
    data = obj["data"]
    md5 = obj["md5"]
    calc_md5 = hashlib.md5(json.dumps(data, sort_keys=True, ensure_ascii=False).encode('utf-8')).hexdigest()
    return md5 == calc_md5

data = {
    "name": "Tom",
    "age": 20,
    "hobbies": ["reading", "music"]
}
json_str = get_json_with_md5(data)
print(json_str)
print(verify_json_md5(json_str))

2、數據緩存

在Web開發中,數據緩存通常可以提升性能。為了判斷緩存是否失效,可以將緩存的JSON數據進行MD5加密,並將其值與之前的MD5值進行比對。如果兩者不同,則說明緩存失效,需要重新獲取數據。

3、數據簽名

在一些安全性要求較高的系統中,為了保證數據的來源和完整性,可以將JSON數據及其MD5值發給接收方。接收方需要驗證JSON數據來源可信,並計算MD5值與接收到的MD5值進行比對。如果兩者相同,則確認接收到的JSON數據是完好無損並且來源可信的。

三、總結

JSON的MD5可以在多個場景中應用,如數據傳輸完整性校驗、數據緩存和數據簽名等。在實現過程中,可以使用第三方庫進行MD5加密,也可以自己實現。

原創文章,作者:EYVSA,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/375200.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
EYVSA的頭像EYVSA
上一篇 2025-04-29 12:49
下一篇 2025-04-29 12:49

相關推薦

  • 使用Java將JSON寫入HDFS

    本篇文章將從以下幾個方面詳細闡述Java將JSON寫入HDFS的方法: 一、HDFS簡介 首先,先來了解一下Hadoop分佈式文件系統(HDFS)。HDFS是一個可擴展性高的分佈式…

    編程 2025-04-29
  • 如何使用Newtonsoft datatable轉Json

    Newtonsoft DataTable 是一個基於.NET的JSON框架,也是一個用於序列化和反序列化JSON的強大工具。 在本文中,我們將學習如何使用Newtonsoft Da…

    編程 2025-04-28
  • JPRC – 輕鬆創建可讀性強的 JSON API

    本文將介紹一個全新的 JSON API 框架 JPRC,通過該框架,您可以輕鬆創建可讀性強的 JSON API,提高您的項目開發效率和代碼可維護性。接下來將從以下幾個方面對 JPR…

    編程 2025-04-27
  • 使用Python獲取JSON並解析

    本文將介紹如何使用Python獲取JSON數據並解析相關內容。通過使用Python的第三方庫,我們可以輕鬆地處理JSON數據,包括讀取、提取和操作JSON數據。 一、獲取JSON數…

    編程 2025-04-27
  • Python存為JSON的方法及實例

    本文將從以下多個方面對Python存為JSON做詳細的闡述。 一、JSON簡介 JSON(JavaScript Object Notation)是一種輕量級的數據交換格式,易於人閱…

    編程 2025-04-27
  • 使用Spread 8展示JSON數據

    使用Spread 8可以方便地展示JSON數據,本文將詳細介紹如何利用Spread 8展示JSON數據。 一、Spread 8簡介 Spread 8是一款強大的電子表格軟件,可以方…

    編程 2025-04-27
  • 如何在json轉實體類時忽略大小寫

    本文將從以下幾個方面介紹如何在json轉實體類時忽略大小寫。 一、使用Gson庫實現json轉實體類忽略大小寫 Gson是Google提供的Java JSON操作庫,它提供了簡單易…

    編程 2025-04-27
  • C# 中 JSON null 不顯示的處理方法

    本文將為大家介紹在 C# 中處理 JSON null 不顯示的解決方法。 一、null 不顯示的問題 在使用 C# 進行 JSON 數據處理的時候,經常會遇到 null 值不顯示的…

    編程 2025-04-27
  • Hive解析JSON詳解

    一、JSON簡介 JSON(JavaScript Object Notation)是一種輕量級的數據交換格式,具有結構清晰、易於讀寫、便於解析等特點。它基於JavaScript的一…

    編程 2025-04-25
  • Jansson:C語言中的JSON編解碼庫

    一、簡介 Jansson是一個C語言編寫的JSON處理庫,提供了JSON編解碼、讀寫、遍歷等一系列操作。Jansson支持RFC7159和ECMA-404定義的JSON格式。Jan…

    編程 2025-04-25

發表回復

登錄後才能評論