密码学---sha1编程

news/2024/12/2 20:47:00/
  • 密码学作业—编程能力属实拉跨了
# 明文转二进制
def bin_trans(mw):b = ""for i in mw:c =  bin(ord(i))[2:]while len(c) < 8:c = '0' + cb = b + creturn b
# 对转换后的位字符串进行补位操作 并且转为16进制
def supplement(c):length = len(c)%512if (length > 448):c = c + "1"for i in range(1,512-length + 448):c = c + "0"elif(length < 448):c = c + "1"for i in range(1,448-length):c = c + '0'else:c = c + '1' return hex(int(c,2))
# 附加长度值
def append(mw,c):length = len(mw)# 附加明文的原长度app =  hex(8*length)[2:]while(len(app)<16):app="0" + appc = c + appreturn c
# 分为16个32比特的字
def cut(w,c):for i in range(0,16):w.append("0x"+c[i*8:i*8+8])return w
# ROTL表示对32个比特的变量循环左移n比特
def ROTL(a,n):a = int(a,16)a = bin(a)a = a[2:]while len(a) < 32:a = "0" + aa = "0b" + ac = a[2:2+n]a = "0b" + a[2+n:] + ca = int(a,2)a = hex(a)return a
# 非门
def Not_func(a):a = int(a,16)a = bin(a)[2:]while len(a) < 32:a = '0' + ac = ''for ch in a:if ch == '0':c = c + '1'else:c = c + '0'c = "0b" + cc = int(c,2)c = hex(c)return c
#0 —— 19
def ch(x,y,z):c = (int(x,16) & int(y,16))^(int(Not_func(x),16) & int(z,16))return c
#20 —— 39 60 —— 79
def parity(x,y,z):c = int(x,16)^int(y,16)^int(z,16)return c
#40 —— 59
def maj(x,y,z):c = (int(x,16) & int(y,16)) ^ (int(x,16) & int(z,16)) ^ (int(y,16) & int(z,16))return c
if __name__=="__main__": #mw="Beijing University of Posts and Telecommunications"mw="State Key Laboratory of Networking and Switching State Key Laboratory of Networking and Switching"
# 初始散列值A = '0x67452301'B = '0xEFCDAB89'C = '0x98BADCFE'D = '0x10325476'E = '0xC3D2E1F0'
# 明文转二进制c = bin_trans(mw)
# 补位操作c = supplement(c)
# 附加长度值c = append(mw, c)
# 赋值给16个32比特的字c = c[2:]w = []w = cut(w,c)
# 扩充W为80个 for i in range(16,80):app=int(w[i-3],16)^int(w[i-8],16)^int(w[i-14],16)^int(w[i-16],16)app=ROTL(hex(app), 1)w.append(app)
# for循环80次for t in range(0,80):if 0 <= t & t <= 19:r = 0x5A827999a = AA = hex((int(ROTL(A,5),16) + ch(B, C, D) + int(E,16) + int(w[t],16) + r) %2 ** 32)b = BB = ac = CC = hex(int(ROTL(b, 30),16) % 2**32)d = DD = cE = delif 20 <= t & t <= 39:r = 0x6ED9EBA1a = AA = hex((int(ROTL(A,5),16) + parity(B, C, D) + int(E,16) + int(w[t],16) + r) %2 ** 32)b = BB = ac = CC = hex(int(ROTL(b, 30),16) % 2**32)d = DD = cE = delif 40 <= t & t <= 59:r = 0x8F1BBCDCa = AA = hex((int(ROTL(A,5),16) + maj(B, C, D) + int(E,16) + int(w[t],16) + r) %2 ** 32)b = BB = ac = CC = hex(int(ROTL(b, 30),16) % 2**32)d = DD = cE = delif 60 <= t & t <= 79:r = 0xCA62C1D6a = AA = hex((int(ROTL(A,5),16) + parity(B, C, D) + int(E,16) + int(w[t],16) + r) %2 ** 32)b = BB = ac = CC = hex(int(ROTL(b, 30),16) % 2**32)d = DD = cE = d
# 算出明文
A=hex((0x67452301 + int(A,16)) % 2**32)
B=hex((0xEFCDAB89 + int(B,16)) % 2**32)
C=hex((0x98BADCFE + int(C,16)) % 2**32)
D=hex((0x10325476 + int(D,16)) % 2**32)
E=hex((0xC3D2E1F0 + int(E,16)) % 2**32)
secret = A[2:]+B[2:]+C[2:]+D[2:]+E[2:]
print("sha1加密后:",secret)
  • 运行结果
    在这里插入图片描述
  • 代码存在问题 超过一定程度的加密没有分类。懒得改了 应付作业。

http://www.ppmy.cn/news/811673.html

相关文章

密码学系列之七:数字签名

数字签名 1. 概述1.1 基本概念1.2 签名原理1.2.1 形式化定义1.2.2 签名过程 2 基于RSA的签名方案2.1 实现过程2.2 安全性分析 3 基于离散对数的签名方案3.1 ElGamal签名体制3.1.1 实现过程3.1.2 安全性分析 3.2 Schnorr签名体制3.2.1 实现过程3.2.2 安全性分析 3.3 DSA签名体制…

OpenWrt mw4530r 开发环境搭建

1、 安装环境 Linux系统&#xff0c;需安装如下依赖包&#xff1a; yum install binutils bzip2 gawk gcc gcc-c gettext makencurses-devel patch unzip wget zlib-devel git 这个不明白&#xff0c;直接安装就可以了。安装完之后要是还有问题就需要根据看出错信息自己下载…

mercurymw305r虚拟服务器,水星MW305R(V1-V3)路由器桥接设置教程

本文主要介绍了水星MW305R(V1-V3)路由器WDS桥接设置方法,也可以说是无线中继设置。但是需要注意的是,是V1-V3版本的水星MW305R路由器的无线桥接设置方法哦! 温馨提示: 水星MW305R路由器目前有V1、V2、V3、V4、V5、V6、V7共7个版本。水星系列路由器的硬件版本,大家可以在该…

C人脸识别

1、原始图片&#xff1a; 2、灰度化下&#xff1a; 3、均值滤波&#xff1a; 4、 二值图加边缘检测 5、生成积分图 6、把待检测的人脸区域划分为25个&#xff0c;因为是一个数组&#xff0c;这样分别统计每个区域的像素个数&#xff1a; x0: 60, y0: 100, x1: 157, y1: 200 …

【周赛总结】17-双周赛108

双周赛108 题目不是特别难&#xff0c;但是也许是十多天只做了每日一题&#xff0c;感觉不是很熟练。 T1、T2各WA一次&#xff0c;T2没有看到排序&#xff0c;T4没有从黑格子出发TLE了 这周继续努力呀 最长交替子序列【LC2765】 给你一个下标从 0 开始的整数数组 nums 。如…

vue3 报错解决:找不到模块‘xxx.vue’或其相应的类型声明。(Vue 3 can not find module)

src下面建立一个xx.d.ts的文件 declare module *.vue {import { ComponentOptions } from vueconst componentOptions: ComponentOptionsexport default componentOptions }

这所985太好考了,专硕06方向仅刷一人,其余过线全收!

一、学校及专业介绍 东北大学&#xff08;Northeastern University&#xff09;位于辽宁省沈阳市&#xff0c;是中华人民共和国教育部直属全国重点大学。它是国家“双一流”建设高校、国家“211工程”和“985工程”重点建设高校&#xff0c;全国首批博士、硕士学位授予单位。 …

华纳云:一台香港多IP服务器如何设置多个IP?

在一台香港多IP服务器上设置多个IP的步骤如下&#xff1a; 1.确认服务器支持多个IP地址&#xff1a;首先&#xff0c;确保你的服务器有多个网卡接口或虚拟网卡接口&#xff0c;以支持多个IP地址。 2.查看当前IP配置&#xff1a;运行以下命令来查看当前的IP配置信息&#xff1a;…