预处理 SHA256 Python 实现

2024-01-01

我正在维基百科上完成 SHA256 的实现,但遇到了困难。我刚刚尝试编写消息预处理的代码,最终消息的长度是 504 位,而不是所需的 512 位。

维基百科:SHA256 http://en.wikipedia.org/wiki/SHA-2

预处理:

将位“1”附加到消息中

附加 k 位“0”,其中 k 是 >= 0 的最小数字,使得生成的消息 长度(以位为模 512)为 448。

附加消息长度(没有“1”位或填充),以位为单位,作为 64 位大端整数 (这将使整个后处理长度成为 512 位的倍数)

我不确定缺陷在哪里,我已经检查了代码好几次了。

def joe_sha256 ( input_string ):
    "Joe's SHA256 implementation"

    # Create a binary version of the input string
    binary_string = create_binary ( input_string )

    # Append '1' bit to the end as per the SHA256 specification
    appended_1_bit_string = append_bit_1 ( binary_string )

    # Append 'k' bits to allow for len(string) % 512 == 488
    appended_k_string = append_k_bit ( appended_1_bit_string )

    # Append length of message
    length_of_message = append_length_of_message ( binary_string )

    # Create final message
    final_message = appended_k_string + length_of_message

    print(len(final_message)) # This prints out 504, it should be 512!!!!

    return final_message # Just for testing.


def create_binary ( input_string ):
    "Takes a string and outputs its binary form"
    A = ''.join(format(ord(x), 'b').zfill(8) for x in input_string)
    return A


def append_bit_1 ( input_string ):
    "Appends the bit 1 to the binary form"
    input_string = input_string + '1'
    return input_string


def append_k_bit ( input_string ):
    "Makes sure the length of input will become X % 512 == 488"
    if len(input_string) % 512 == 488:
        return input_string
    else:
        while len(input_string) % 512 != 488:
            input_string = input_string + '0'
        return input_string


def append_length_of_message ( input_string ):
    ""
    # Get value
    hex = format(len(input_string),'x')

    # Construct the 64 bit number?
    final_num = ''
    length = 16-len(hex)
    for x in range(length):
        final_num = final_num + '0'

    final_num = final_num + hex

    return final_num

有两个问题:

1)代码中的 488 幻数应该是 448。

2) 您在append_length_of_message() 中只使用了16 个“位”(字符)。

HIH!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

预处理 SHA256 Python 实现 的相关文章

  • setColumnStretch 和 setRowStretch 如何工作

    我有一个使用构建的应用程序PySide2它使用setColumnStretch用于柱拉伸和setRowStretch用于行拉伸 它工作得很好 但我无法理解它是如何工作的 我参考了 qt 文档 但它对我没有帮助 我被困在括号内的两个值上 例如
  • 如何使用 tkinter 使用网格功能显示不同的图像?

    我想使用显示文件夹中的图像grid 但是当我尝试使用以下代码时 我得到了迭代单个图像的输出 My code def messageWindow win Toplevel path C Users HP Desktop dataset for
  • 用于读取类似 CSV 行的 Python 正则表达式

    我想解析传入的类似 CSV 的数据行 值用逗号分隔 逗号周围可能有前导和尾随空格 并且可以用 或 引用 例如 这是有效的行 data1 data2 data3 data4 data5 但这是格式错误的 data1 data2 da ta3
  • 如何使用 Pycharm 运行 fast-api 服务器?

    我有一个简单的 API 函数 如下所示 from fastapi import FastAPI app FastAPI app get async def read root return Hello World 我正在使用启动服务器uvi
  • 如何搜索一列并用找到的内容填充另一列?

    我有一个带有虚构人物数据的大熊猫数据框 下面是一个小例子 每个人都由一个数字定义 import pandas as pd import numpy as np df pd DataFrame Number 5569 3385 9832 64
  • 在 ubuntu 中卸载 python 模块

    我必须删除一个名为 django 的 python 模块 一种流行的模块 因为我安装了错误的版本 1 3 py 2 6 中的 beta 如何卸载这个模块 请解释一下 因为我只在 Windows 中使用过 python 而从未在 Ubuntu
  • Flask 和 Reactjs 抛出 JSX 转换错误

    我已经开始将 ReactJS 与 Python Flask 后端结合使用 通过 Flask 渲染模板时 我在 Chrome 控制台中收到以下客户端错误 错误 找不到模块 jstransform visitors es6 templates
  • Python 模块 BeautifulSoup 提取锚点 href

    我正在使用 BeautifulSoup 模块通过以下方式从 html 选择所有 href def extract links html soup BeautifulSoup html anchors soup findAll a print
  • python os.fork 使用相同的 python 解释器吗?

    据我所知 Python 中的线程使用相同的 Python 解释器实例 我的问题是与创建的流程相同os fork 或者每个进程创建的os fork有自己的翻译吗 每当你 fork 时 整个 Python 进程都会在内存中复制 包括Python
  • 使用最新值进行采样

    考虑以下系列 created at 2014 01 27 21 50 05 040961 80000 00 2014 03 12 18 46 45 517968 79900 00 2014 09 05 20 54 17 991260 636
  • Pandas 根据条件替换数据框值

    我有一个主数据框 df Colour Item Price Blue Car 40 Red Car 30 Green Truck 50 Green Bike 30 然后我有一个价格修正数据框 df pc Colour Item Price
  • 在基本 Tensorflow 2.0 中运行简单回归

    我正在学习 Tensorflow 2 0 我认为在 Tensorflow 中实现最基本的简单线性回归是一个好主意 不幸的是 我遇到了几个问题 我想知道这里是否有人可以提供帮助 考虑以下设置 import tensorflow as tf 2
  • 我应该在哪里对对象和字段进行 django 验证?

    我正在创建一个 Django 应用程序 它使用 Django Rest Framework 和普通的 django views 作为用户的入口点 我想对模型的独立字段以及整个对象进行验证 例如 字段 根据正则表达式函数输入的车牌是否正确 与
  • 将整数转换为特定格式的十六进制字符串

    我是 python 新手 有以下问题 我需要将整数转换为 6 个字节的十六进制字符串 例如 281473900746245 gt xFF xFF xBF xDE x16 x05 十六进制字符串的格式很重要 int 值的长度是可变的 格式 0
  • 如何使用 Matplotlib 可视化标量二维数据?

    所以我有一个网格网格 矩阵 X 和 Y 以及标量数据 矩阵 Z 我需要将其可视化 最好是一些 2D 图像 在各点处带有颜色 显示 Z 值 我做了一些研究 但没有找到任何能完全满足我想要的效果的东西 pyplot imshow Z 看起来不错
  • 如何从 Anaconda 更新 Pandas 以及最后是否可以使用 eclipse

    我已经使用以下文档通过 Anaconda 安装了 Python http www kevinsheppard com images 0 09 Python introduction pdf http www kevinsheppard co
  • 无法将 librosa 与 python 3 一起使用

    我已经在 Windows 上的 ubuntu 子系统上使用 pip3 正确安装了 librosa 但是当我尝试执行像这样的简单程序时 import librosa data sr librosa load sound mp3 print d
  • Python 中的可逆 STFT 和 ISTFT

    有没有通用的形式短时傅立叶变换 https en wikipedia org wiki Short time Fourier transform与内置于 SciPy 或 NumPy 或其他什么中的相应逆变换 这是pyplotspecgram
  • Python 子进程:无法转义引号

    我知道以前曾问过类似的问题 但它们似乎都是通过重新设计参数的传递方式 即使用列表等 来解决的 但是 我这里有一个问题 因为我没有这个选项 有一个特定的命令行程序 我使用的是 Bash shell 我必须向其传递带引号的字符串 它不能不被引用
  • 如何在Python中捕获打印机事件

    我想在打印机开始打印时捕获信号 如果你告诉我如何获取将要打印的文档的路径 那就太好了 pywin32print看起来很有用 但不知道怎么用 要获得新打印作业的通知 您可以使用FindFirstPrinterChangeNotificatio

随机推荐

  • 递减字母值

    我试图弄清楚如何将数组中的一堆字母值向下移动一步 例如 我的数组包含值 d e f g h 我想将其更改为 c d e f G 这是我正在使用的代码 function move up left x if x orientation down
  • iTextSharp 表格宽度为页面的 100%

    我正在尝试使用 iTextSharp 将表格添加到文档中 这是一个例子 Document document new Document PageSize LETTER 72 72 72 72 PdfWriter writer PdfWrite
  • 重命名所有列名称以用于大查询中的连接目的

    我需要连接两个具有完全相同列名的表 我需要在加入步骤之前重命名列 每个表包含 100 多列 我想知道是否有任何方法可以添加前缀或后缀来重命名所有列 而不是手动更改它们AS 我在 BigQuery 上使用标准 SQL 我在下面举了一个例子来说
  • 如何对集合中所有对象的属性执行 .Max() 并返回具有最大值的对象[重复]

    这个问题在这里已经有答案了 我有一个具有两个 int 属性的对象列表 该列表是另一个 linq 查询的输出 物体 public class DimensionPair public int Height get set public int
  • 为什么c#不能计算数学函数的精确值

    为什么c 不能做任何精确的操作 Math Pow Math Sqrt 2 0 2 2 0000000000000004 我知道双打是如何工作的 我知道舍入误差来自哪里 我知道它是almost正确的值 我知道你不能在有限的双精度数中存储无限的
  • 如何配置 HTML Purifier 以允许图像 src 的数据 URI?

    如何允许图像标签的 src 属性使用 Base64 数据 我看到这样的代码 config gt set URI AllowedSchemes array http gt true https gt true mailto gt true f
  • Windows批处理脚本取消隐藏被病毒隐藏的文件

    由于我看到很多人的文件被闪存驱动器病毒隐藏 因此我为他们提供了一个 Windows 命令行 使用attrib 或使用Linux 来解决当受感染的文件被删除并且它们的文件仍然 丢失 时的问题 删除文件和文件夹属性系统 隐藏和归档的命令 并非真
  • 当父线程退出时,Java 守护线程会自动终止吗?

    如果一个线程创建了一个守护线程 我可以相信当父线程退出run方法时 子线程也会终止吗 否 线程是独立的 一个线程 拥有 另一个线程并强制终止是没有意义的 如果你是really询问当应用程序中的所有非守护线程都已死亡时 您是否可以依赖进程死亡
  • 为 api 26 设置 Gradle (Android)

    由于我已将 Nexus 5x 升级到 Android O DP3 我无法测试我的应用程序 我收到错误消息是因为没有配置我的 Gradle 文件以使用新的 API 级别 26 所以我更改了它和依赖项 但我在所有支持库上不断收到错误 例如 Fa
  • Google Service Plugin 3.2.0 导致 Gradle 构建失败

    我正在尝试更新 Google 服务插件 但在 Gradle 同步期间收到错误 项目刷新失败 错误 未找到匹配项 版本 3 1 1 一切正常 但一旦我将 build gradle 更新为 classpath com google gms go
  • Angular 1.5 & ES6 - 依赖注入

    我是 Angular 新手 我正在尝试使用 ES6 我的依赖注入有问题 我无法让它工作 我的index js import index state css import angular from angular import angular
  • 无法更改 Visual Studio 2017 中程序集的默认语言

    我的应用程序支持三种语言 en es 和 fr 当我构建我的 干净的 从模板 UWP 应用程序时 我收到消息 warning PRI257 0xdef00522 Resources found for language s en es fr
  • 如何按位和 CFBitVector

    我有两个实例CFMutableBitVector 像这样 CFBitVectorRef ref1 ref2 我怎样才能对这些家伙进行按位运算 目前我只关心and 但显然xor or等了解一下会很有用 显然 我可以迭代向量中的位 但当我在位级
  • Noob to PowerShell,复制文件夹内的文件

    抱歉 如果这是一个非常简单的过程 我有一个文件夹结构 根级别有大约 4 000 个目录 空 另一个位置有另一组包含数据的文件夹 我只想将 location2 中的文件夹中的文件复制到 location1 中的文件夹 即 FolderABC1
  • 以百分比形式显示会话的 Oracle CPU 使用率

    以下脚本返回活动会话的 CPU 使用情况 结果显示 CPU 使用率 以秒为单位 我需要的是相同的报告 其中包含 CPU 使用率百分比 做这个的最好方式是什么 Show CPU Usage for Active Sessions SET PA
  • 以编程方式转储调用堆栈

    寻找一种方法 在遇到一段代码时以编程方式转储调用堆栈和 net Win Forms 应用程序 这是我以前从未遇到过的东西 但会节省我一些调试时间 更新 忘记添加 这会给应用程序增加多少开销 即它会大大减慢应用程序的速度 System Env
  • 设置 WH_KEYBOARD 挂钩失败并出现错误 1428

    这是我的 C 代码 include
  • 如何获取显示引用的 C# 库的 XML 文档?

    假设您有一个包含多个函数的 C 库 所有函数都使用通常的文档记录
  • ghci 未从文件加载函数

    在 test hs 中 我有 doubleMe x x x 在 ghci 中 我输入 Prelude gt l test 1 of 1 Compiling Main test hs interpreted Ok modules loaded
  • 预处理 SHA256 Python 实现

    我正在维基百科上完成 SHA256 的实现 但遇到了困难 我刚刚尝试编写消息预处理的代码 最终消息的长度是 504 位 而不是所需的 512 位 维基百科 SHA256 http en wikipedia org wiki SHA 2 预处