自开发的哈希生成器(SHG)迎来 ULTRA 版本,内含新技术 SNF,详细介绍开发过程

时间:2024-10-05 09:05:10

 上链接:

GitHub项目地址/nitsc/Strong-Hash-Generator/tree/main/Ultra
**** 上的介绍/zwa20110606/article/details/140708538

 

**功能特点:**

**ULTRA 版本** 提供了以下功能:

- 使用了 10 层哈希算法:

  1. SHA3-256  

  2. SHA3-512

  3. SHA3-384

  4. SHA2-256

  5. SHA2-512

  6. SHA2-384

  7. BLAKE3

  8. BLAKE2b

  9. BLAKE2s

  10. RIPEMD-256

- 每层哈希算法都使用了很长的盐值(salt),以确保哈希值的唯一性和安全性。

- 采用新技术 `SNF(序列号因子)` ,使得破解难度大大增加,但数据验证需要采用注册数据时的设备(包括一样序列号的主板、CPU)。 

- 使用了多种密码哈希算法:

  1. bcrypt 

  2. PBKDF2

  3. Argon2

  4. HMAC-SHA256

  5. AES 中的 CBC 模式

- 4096 次迭代

- 动态活跃密钥 

 

详细深入了解

导入了一些库和模块,下面是每个库或模块的版本要求以及环境要求的详细信息:

1. **Python版本**:

   - Python 3.6或更高版本。部分库,如`cryptography`和`argon2`, 可能在Python 3.6及更高版本中才会有最佳兼容性和支持。

2. **第三方库**:

   - **`wmi`**: 用于Windows系统的WMI接口访问。要求Windows操作系统,Python版本至少为3.6。
   - **`hmac`**: Python标准库中的模块,无额外要求。
   - **`blake3`**: BLAKE3哈希库。可以通过`pip install blake3`安装,支持Python 3.6及以上版本。
   - **`hashlib`**: Python标准库中的模块,无额外要求。
   - **`platform`**: Python标准库中的模块,无额外要求。
   - **`subprocess`**: Python标准库中的模块,无额外要求。
   - **`Crypto`**: `pycryptodome`库中的模块。可以通过`pip install pycryptodome`安装,支持Python 3.6及以上版本。
   - **`argon2`**: Argon2密码哈希库。可以通过`pip install argon2-cffi`安装,支持Python 3.6及以上版本。
   - **`base64`**: Python标准库中的模块,无额外要求。
   - **`cryptography`**: 提供密码学操作的库。可以通过`pip install cryptography`安装,支持Python 3.6及以上版本。

确保你的Python环境中已经安装了这些第三方库的兼容版本,并且使用的Python版本与这些库兼容。如果有版本冲突,可以使用`pip`进行安装或升级。例如:

pip install blake3 pycryptodome argon2-cffi cryptography


(实际中pip安装命令只支持同时安装3个包)
或运行官方`安装依赖项.py`此外,确保你的操作系统和Python环境与这些库兼容,特别是在使用与系统相关的库(如`wmi`)时。

  1. # 安装依赖
  2. import os,subprocess
  3. def up_pip():
  4.     bat_folder = 'bat'
  5.     if not (bat_folder):
  6.         (bat_folder)
  7.     
  8.     bat_file_path = (bat_folder, '')
  9.     with open(bat_file_path, 'w') as bat_file:
  10.         bat_file.write("pip install --upgrade pip")
  11.     ([bat_file_path], shell=True)
  12.     
  13. def install_package(package_name):
  14.     bat_folder = 'bat'
  15.     if not (bat_folder):
  16.         (bat_folder)
  17.     bat_file_path = (bat_folder, '')
  18.     with open(bat_file_path, 'w') as bat_file:
  19.         bat_file.write(f'pip install {package_name}')
  20.     ([bat_file_path], shell=True)
  21.     
  22. def list():
  23.     bat_folder = 'bat'
  24.     if not (bat_folder):
  25.         (bat_folder)
  26.     bat_file_path = (bat_folder, '')
  27.     with open(bat_file_path, 'w') as bat_file:
  28.         bat_file.write("pip list")
  29.     ([bat_file_path], shell=True)
  30. def install_dependency():
  31.     up_pip()
  32.     install_package("bcrypt cryptography argon2-cffi")
  33.     install_package("blake3 pycryptodome")
  34.     list()
  35.     print("安装依赖库成功!接下来您就可以正常使用 SHG Pre 啦")
  36.     
  37. if __name__ == "__main__":
  38.     install_dependency()
  39. # 导入必要的库
  40. import os
  41. import wmi
  42. import hmac
  43. import time
  44. import blake3
  45. import hashlib
  46. import platform
  47. import subprocess
  48. from import RIPEMD
  49. from argon2 import PasswordHasher
  50. from base64 import urlsafe_b64encode
  51. from import hashes
  52. from import default_backend
  53. from .pbkdf2 import PBKDF2HMAC
  54. from import Cipher, algorithms, modes

 

 


# 哈希计算函数

本文档定义了一些用于计算哈希值的函数,这些函数使用不同的哈希算法,并结合了盐(salt)和设备序列号(device_sn)来生成唯一的哈希值。这些哈希算法包括SHA-2系列、SHA-3系列、BLAKE3、BLAKE2系列以及RIPEMD系列。

## 函数列表

### `generate_salt(length=1024)`
生成指定长度的随机盐值(salt)。
- **参数**:
  - `length` (int): 盐值的长度,默认为1024字节。
- **返回值**: 随机生成的盐值(bytes)。

### `salted_sha2256_hash(data, salt, sn)`
使用盐和SHA2-256算法计算哈希值。
- **参数**:
  - `data` (str): 要计算哈希的数据。
  - `salt` (bytes): 盐值。
  - `sn` (str): 设备序列号。
- **返回值**: 计算得到的SHA2-256哈希值(十六进制字符串)。

### `salted_sha2512_hash(data, salt, sn)`
使用盐和SHA2-512算法计算哈希值。
- **参数**:
  - `data` (str): 要计算哈希的数据。
  - `salt` (bytes): 盐值。
  - `sn` (str): 设备序列号。
- **返回值**: 计算得到的SHA2-512哈希值(十六进制字符串)。

### `salted_sha3256_hash(data, salt, sn)`
使用盐和SHA3-256算法计算哈希值。
- **参数**:
  - `data` (str): 要计算哈希的数据。
  - `salt` (bytes): 盐值。
  - `sn` (str): 设备序列号。
- **返回值**: 计算得到的SHA3-256哈希值(十六进制字符串)。

### `salted_sha3512_hash(data, salt, device_sn)`
使用盐和SHA3-512算法计算哈希值。
- **参数**:
  - `data` (str): 要计算哈希的数据。
  - `salt` (bytes): 盐值。
  - `device_sn` (str): 设备序列号。
- **返回值**: 计算得到的SHA3-512哈希值(十六进制字符串)。

### `salted_sha2384_hash(data, salt, device_sn)`
使用盐和SHA2-384算法计算哈希值。
- **参数**:
  - `data` (str): 要计算哈希的数据。
  - `salt` (bytes): 盐值。
  - `device_sn` (str): 设备序列号。
- **返回值**: 计算得到的SHA2-384哈希值(十六进制字符串)。

### `salted_sha3384_hash(data, salt, device_sn)`
使用盐和SHA3-384算法计算哈希值。
- **参数**:
  - `data` (str): 要计算哈希的数据。
  - `salt` (bytes): 盐值。
  - `device_sn` (str): 设备序列号。
- **返回值**: 计算得到的SHA3-384哈希值(十六进制字符串)。

### `salted_blake3_hash(data, salt, device_sn)`
使用盐和BLAKE3算法计算哈希值。
- **参数**:
  - `data` (str): 要计算哈希的数据。
  - `salt` (bytes): 盐值。
  - `device_sn` (str): 设备序列号。
- **返回值**: 计算得到的BLAKE3哈希值(十六进制字符串)。

### `salted_blake2b_hash(data, salt, device_sn)`
使用盐和BLAKE2b算法计算哈希值。
- **参数**:
  - `data` (str): 要计算哈希的数据。
  - `salt` (bytes): 盐值。
  - `device_sn` (str): 设备序列号。
- **返回值**: 计算得到的BLAKE2b哈希值(十六进制字符串)。

### `salted_blake2s_hash(data, salt, device_sn)`
使用盐和BLAKE2s算法计算哈希值。
- **参数**:
  - `data` (str): 要计算哈希的数据。
  - `salt` (bytes): 盐值。
  - `device_sn` (str): 设备序列号。
- **返回值**: 计算得到的BLAKE2s哈希值(十六进制字符串)。

### `salted_pipemd256_hash(data, salt, device_sn)`
使用盐和RIPEMD-160算法计算哈希值。
- **参数**:
  - `data` (str): 要计算哈希的数据。
  - `salt` (bytes): 盐值。
  - `device_sn` (str): 设备序列号。
- **返回值**: 计算得到的RIPEMD-160哈希值(十六进制字符串)。

  1. # 生成盐(Salt)
  2. def generate_salt(length=1024):
  3.     return (length)
  4. # 使用盐和 SHA2-256 计算哈希值
  5. def salted_sha2256_hash(data, salt, sn):
  6.     sha2256 = hashlib.sha256()
  7.     (salt + ('utf-8') + ('utf-8'))
  8.     return ()
  9. # 使用盐和 SHA2-512 计算哈希值
  10. def salted_sha2512_hash(data, salt, sn):
  11.     sha2512 = hashlib.sha512()
  12.     (salt + ('utf-8') + ('utf-8'))
  13.     return ()
  14. # 使用盐和 SHA3-256 计算哈希值
  15. def salted_sha3256_hash(data, salt, sn):
  16.     sha3256 = hashlib.sha3_256()
  17.     (salt + ('utf-8') + ('utf-8'))
  18.     return ()
  19. # 使用盐和 SHA3-512 计算哈希值
  20. def salted_sha3512_hash(data, salt, device_sn):
  21.     sha3512 = hashlib.sha3_512()
  22.     (salt + device_sn.encode('utf-8') + ('utf-8'))
  23.     return ()
  24. # 使用盐和 SHA2-384 计算哈希值
  25. def salted_sha2384_hash(data, salt, device_sn):
  26.     sha2384 = hashlib.sha384()
  27.     (salt + device_sn.encode('utf-8') + ('utf-8'))
  28.     return ()
  29. # 使用盐和 SHA3-384 计算哈希值
  30. def salted_sha3384_hash(data, salt, device_sn):
  31.     sha3384 = hashlib.sha3_384()
  32.     (salt + device_sn.encode('utf-8') + ('utf-8'))
  33.     return ()
  34. # 使用盐和 BLAKE3 计算哈希值
  35. def salted_blake3_hash(data, salt, device_sn):
  36.     return blake3.blake3(salt + device_sn.encode('utf-8') + ('utf-8')).hexdigest()
  37. # 使用盐和 BLAKE2b 计算哈希值
  38. def salted_blake2b_hash(data, salt, device_sn):
  39.     blake2b = hashlib.blake2b()
  40.     (salt + device_sn.encode('utf-8') + ('utf-8'))
  41.     return ()
  42. # 使用盐和 BLAKE2s 计算哈希值
  43. def salted_blake2s_hash(data, salt, device_sn):
  44.     blake2s = hashlib.blake2s()
  45.     (salt + device_sn.encode('utf-8') + ('utf-8'))
  46.     return ()
  47. # 使用盐和 PIPEMD 计算哈希值
  48. def salted_pipemd256_hash(data, salt, device_sn):
  49.     hasher = ()
  50.     (salt + device_sn.encode('utf-8') + ('utf-8'))
  51.     return ()

 

 


# 设备信息获取和哈希计算

本文档定义了一个用于获取设备信息并计算设备哈希值的类和函数。

## `Hardware` 类

### 方法列表

#### `get_cpu_sn()`
获取CPU序列号。
- **返回值**: CPU的序列号(字符串)。

#### `get_baseboard_sn()`
获取主板序列号。
- **返回值**: 主板的序列号(字符串)。

#### `get_serial()`
获取设备序列号。
- **返回值**: 设备的网络主机名(字符串)。

## `con()` 函数

该函数获取设备的CPU序列号、主板序列号和设备序列号,并将它们拼接成一个字符串。然后,生成一个盐值,并使用SHA3-512算法计算哈希值。

  1. # 获取设备信息
  2. class Hardware:
  3.     # 获取 CPU 序列号
  4.     @staticmethod
  5.     def get_cpu_sn():
  6.         c = ()
  7.         for cpu in c.Win32_Processor():
  8.             # print(())
  9.             return ()
  10.     # 获取主板序列号
  11.     @staticmethod
  12.     def get_baseboard_sn():
  13.         c = ()
  14.         for board_id in c.Win32_BaseBoard():
  15.             # print(board_id.SerialNumber)
  16.             return board_id.SerialNumber
  17.     # 获取设备序列号
  18.     @staticmethod
  19.     def get_serial():
  20.         return () 
  21. def con():
  22.     cpusn = Hardware.get_cpu_sn()
  23.     boardsn = Hardware.get_baseboard_sn()
  24.     serial = Hardware.get_serial()
  25.     device_sn = cpusn + boardsn + serial
  26.     salt = generate_salt()
  27.     device_sn = salted_sha3512_hash(device_sn, salt, device_sn)
  28.     return device_sn

 

 

 

# 哈希、密钥衍生和加密函数

本文档定义了几个用于计算哈希值、密钥衍生、数据加密以及生成HMAC的函数。

## 函数列表

### `argon2_hash(data)`
使用Argon2算法计算数据的哈希值。
- **参数**:
  - `data` (str): 要计算哈希的输入数据。
- **返回值**: 计算得到的Argon2哈希值(字符串)。

### `pbkdf2_hash(data, salt)`
使用PBKDF2算法进行密钥衍生。
- **参数**:
  - `data` (str): 要衍生的输入数据。
  - `salt` (bytes): 盐值。
- **返回值**: 计算得到的密钥(Base64编码的字符串)。

### `generate_key(password: str, salt: bytes)`
生成随机密钥,使用PBKDF2算法进行密钥衍生。
- **参数**:
  - `password` (str): 用于生成密钥的密码。
  - `salt` (bytes): 盐值。
- **返回值**: 生成的密钥(字节串)。

### `encrypt(data: bytes, key: bytes)`
使用AES算法对数据进行加密。
- **参数**:
  - `data` (bytes): 要加密的数据。
  - `key` (bytes): 用于加密的密钥。
- **返回值**: 加密后的数据(包括初始向量和加密结果,字节串)。

### `create_hmac(data: bytes, key: bytes)`
生成数据的HMAC值。
- **参数**:
  - `data` (bytes): 要生成HMAC的数据。
  - `key` (bytes): 用于生成HMAC的密钥。
- **返回值**: 生成的HMAC值(字节串)。

  1. # 通过 Argon2 计算哈希值
  2. def argon2_hash(data):
  3.     ph = PasswordHasher()
  4.     hashed = ph.hash(data)
  5.     return hashed
  6. # 使用 PBKDF2 进行密钥衍生
  7. def pbkdf2_hash(data, salt):
  8.     kdf = PBKDF2HMAC(
  9.         algorithm=hashes.SHA256(),
  10.         length=1024,
  11.         salt=salt,
  12.         iterations=66536,
  13.         backend=default_backend()
  14.     )
  15.     key = (('utf-8'))
  16.     return urlsafe_b64encode(key).decode('utf-8')
  17. # 生成随机密钥
  18. def generate_key(password: str, salt: bytes):
  19.     kdf = PBKDF2HMAC(
  20.         algorithm=hashes.SHA256(),
  21.         length=32,
  22.         salt=salt,
  23.         iterations=66536,
  24.         backend=default_backend()
  25.     )
  26.     return (())
  27. # 加密数据
  28. def encrypt(data: bytes, key: bytes):
  29.     iv = (16)
  30.     cipher = Cipher((key), (iv), backend=default_backend())
  31.     encryptor = ()
  32.     return iv + (data) + ()
  33. # 生成 HMAC
  34. def create_hmac(data: bytes, key: bytes):
  35.     return (key, data, hashlib.sha256).digest()

 

 

 


# 综合哈希计算和加密函数

本文档定义了两个用于进行复杂哈希计算和加密操作的函数:`strong_hash` 和 `cycle_strong_hash`。

## `strong_hash(data, salt)`

进行多层哈希计算和AES加密。
- **步骤**:
  1. 获取设备信息(通过调用 `con()` 函数)。
  2. 使用盐化后的SHA2-256算法计算初始哈希值。
  3. 使用SHA2-256的结果计算盐化后的SHA2-512哈希值。
  4. 使用SHA2-512的结果计算盐化后的SHA3-256哈希值。
  5. 使用SHA3-256的结果计算盐化后的SHA3-512哈希值。
  6. 使用SHA3-512的结果计算盐化后的SHA2-384哈希值。
  7. 使用SHA2-384的结果计算盐化后的SHA3-384哈希值。
  8. 使用SHA3-384的结果计算盐化后的BLAKE3哈希值。
  9. 使用BLAKE3的结果计算盐化后的BLAKE2b哈希值。
  10. 使用BLAKE2b的结果计算盐化后的BLAKE2s哈希值。
  11. 使用BLAKE2s的结果计算盐化后的RIPEMD-160哈希值。
  12. 使用AES算法(CFB模式)对RIPEMD-160哈希值进行加密。
  13. 使用HMAC-SHA256计算加密后的哈希值的HMAC值。
  14. 使用HMAC-SHA256的结果计算盐化后的Argon2哈希值。
  15. 使用Argon2的结果计算盐化后的PBKDF2哈希值。
- **参数**:
  - `data` (str): 要计算哈希的数据。
  - `salt` (bytes): 盐值。
- **返回值**: 计算得到的PBKDF2哈希值(Base64编码的字符串)。 

## `cycle_strong_hash(data, iterations=1024)`

进行多次哈希计算,使用 `strong_hash` 函数。
- **步骤**:
  1. 生成盐值(调用 `generate_salt()` 函数)。
  2. 循环执行 `strong_hash` 函数 `iterations` 次。
- **参数**:
  - `data` (str): 要计算哈希的数据。
  - `iterations` (int): 哈希计算的次数,默认为1024。
- **返回值**: 最终计算得到的哈希值(Base64编码的字符串)。

  1. # 综合使用 10层算法 和 AES加密算法 等进行哈希计算
  2. def strong_hash(data, salt):
  3.     # 获取设备信息
  4.     device_sn = con()
  5.     
  6.     # 先计算盐化后的 SHA2-256 哈希值
  7.     sha2256_value = salted_sha2256_hash(data, salt, device_sn)
  8.     
  9.     # 使用 SHA2-256 的结果计算盐化后的 SHA2-512 哈希值
  10.     sha2512_value = salted_sha2512_hash(sha2256_value, salt, device_sn)
  11.     
  12.     # 使用 SHA2-512 的结果计算盐化后的 SHA3-256 哈希值
  13.     sha3256_value = salted_sha3256_hash(sha2512_value, salt, device_sn)
  14.     
  15.     # 使用 SHA3-256 的结果计算盐化后的 SHA3-512 哈希值
  16.     sha3512_value = salted_sha3512_hash(sha3256_value, salt, device_sn)
  17.     
  18.     # 使用 SHA3-512 的结果计算盐化后的 SHA2-384 哈希值
  19.     sha2384_value = salted_sha2384_hash(sha3512_value, salt, device_sn)
  20.     
  21.     # 使用 SHA2-384 的结果计算盐化后的 SHA3-384 哈希值
  22.     sha3384_value = salted_sha3384_hash(sha2384_value, salt, device_sn)
  23.     
  24.     # 使用 SHA3-384 的结果计算盐化后的 BLAKE3 哈希值
  25.     blake3_value = salted_blake3_hash(sha3384_value, salt, device_sn)
  26.     
  27.     # 使用 BLAKE3 的结果计算盐化后的 BLAKE2b 哈希值
  28.     blake2b_value = salted_blake2b_hash(blake3_value, salt, device_sn)
  29.     
  30.     # 使用 BLAKE2b 的结果计算盐化后的 BLAKE2s 哈希值
  31.     blake2s_value = salted_blake2s_hash(blake2b_value, salt, device_sn)
  32.     
  33.     # 使用 BLAKE2s 的结果计算盐化后的 PIPEMD 哈希值
  34.     pipemd256_value = salted_pipemd256_hash(blake2s_value, salt, device_sn)
  35.     
  36.     # 使用 AES 加密算法的 CFB 模式加密 PIPEMD 哈希值
  37.     password = sha3512_value + blake3_value
  38.     key = generate_key(password, salt)
  39.     encrypted_hash = encrypt(pipemd256_value.encode(), key)
  40.     
  41.     # 使用 HMAC-SHA256 计算加密后的哈希值的 HMAC 值
  42.     hmac_value = create_hmac(encrypted_hash, key)
  43.     
  44.     # 使用 HMAC-SHA256 的结果计算盐化后的 Argon2 哈希值
  45.     global then_value
  46.     then_value = urlsafe_b64encode(hmac_value).decode()
  47.     argon2_hash_value = argon2_hash(then_value)
  48.     
  49.     # 使用 Argon2 的结果计算盐化后的 PBKDF2 哈希值
  50.     final_hash_value = pbkdf2_hash(argon2_hash_value, salt)
  51.     return final_hash_value
  52. # 循环计算 哈希值
  53. def cycle_strong_hash(data, iterations=4096):
  54.     salt = generate_salt()  # 生成盐
  55.     
  56.     # 循环多次哈希计算
  57.     for _ in range(iterations):
  58.         end_hash_value = strong_hash(data, salt)
  59.     return end_hash_value  # 返回最终的哈希值

 

 

 

 

# 主函数

`main`函数是程序的入口点,用于展示一个强哈希生成器的简要预览,并允许用户输入数据进行哈希计算。

## 功能描述

1. **介绍**:
   - 输出程序的标题和退出提示信息。2. **循环**:
   - 提示用户输入要计算哈希的数据。
   - 如果用户输入`!@exit`或`!@exit`,则退出程序。
   - 否则,尝试计算输入数据的哈希值。
     - 记录开始时间。
     - 调用 `cycle_strong_hash` 函数进行哈希计算(`iterations` 参数设置为1)。
     - 记录结束时间并输出计算得到的哈希值和所花费的时间。
     - 捕获并处理可能出现的异常,输出错误信息。

  1. # 主函数
  2. def main():
  3.     # 介绍
  4.     print("Super Strong Hash Generator Preview ")
  5.     print("\nEnter '!@exit' to quit.")
  6.     
  7.     # 循环
  8.     while True:
  9.         d = input("Enter the data to hash: ")
  10.         d = ()
  11.         if d == '!@exit' or d == '!@exit':
  12.             break
  13.         else:
  14.             try:
  15.                 # 调用 cycle_strong_hash 函数计算哈希值
  16.                 start_time = ()  # 记录开始时间
  17.                 super_hash_value = cycle_strong_hash(d, iterations=1)
  18.                 end_time = ()  # 记录结束时间
  19.                 print("Super Strong Hash:", super_hash_value)
  20.                 print("Time taken to compute hash:", end_time - start_time, "seconds")
  21.             except Exception as e:
  22.                 print("Error:", e)
  23. # 运行主函数
  24. if __name__ == "__main__"
  25.     main()

 

 

 

我的个人网站

我的个人网站/

我的GitHub个人主页

我的GitHub主页,有很多开源实用的程序/nitsc

 图来自GitHub Octodex,侵权删