当前位置: 首页 > news >正文

湖南建设网站广西网站建设哪家不错

湖南建设网站,广西网站建设哪家不错,网页设计有哪些内容,如何建立自己手机网站对于希尔加解密很多writeup都说用在线工具#xff0c;所以研究了一下#xff0c;写了一个方便的加解密python代码#xff0c;根据给定的字母表及私钥字符串#xff0c;尝试不同纬度不同重叠的加密矩阵输出加解密结果。运行效果如下#xff1a; 代码文件Hill希尔加解密_fi…对于希尔加解密很多writeup都说用在线工具所以研究了一下写了一个方便的加解密python代码根据给定的字母表及私钥字符串尝试不同纬度不同重叠的加密矩阵输出加解密结果。运行效果如下 代码文件Hill希尔加解密_final.py import numpy as np import string # 导入自定义模块以创建矩阵和转换字符串 from util_create_matrix import create_matrix_from_list, create_numbers_from_string# 定义了使用的字符集包括所有小写字母、空格、逗号和句点 alphabet abcdefghijklmnopqrstuvwxyz ,. # 密钥短语用于生成加密/解密所需的密钥矩阵 key_phrase www.verymuch.netdef mod_inverse(a, m):计算模m下a的逆元。逆元是满足 (a * x) % m 1 的整数x。a a % mfor x in range(1, m):if (a * x) % m 1:return xreturn Nonedef matrix_mod_inv(matrix, modulus):计算给定矩阵在模modulus下的逆矩阵。这是通过先计算矩阵的行列式及其模逆然后应用数学公式来实现的。det int(np.round(np.linalg.det(matrix))) # 计算行列式并取整det_inv mod_inverse(det, modulus) # 计算行列式的模逆matrix_modulus_inv (det_inv * np.round(det * np.linalg.inv(matrix)).astype(int) % modulus)return matrix_modulus_invdef char_to_num(char):将字符转换为对应的数字。这里将空格、逗号和句号也视为字符集的一部分。if char :return 26elif char ,:return 27elif char .:return 28else:return string.ascii_lowercase.index(char)def num_to_char(num):将数字转换回对应的字符。与char_to_num函数相对应。if num 26:return elif num 27:return ,elif num 28:return .else:return string.ascii_lowercase[num]def prepare_text(text, block_size):准备文本以适应加密/解密过程确保文本长度是block_size的倍数不足部分以x填充。while len(text) % block_size ! 0:text xreturn textdef text_to_numbers(text):将文本字符串转换为数字序列每个字符映射到其在字母表中的位置。return [char_to_num(char) for char in text]def numbers_to_text(numbers):将数字序列转换回文本字符串每个数字映射回其对应的字符。return .join(num_to_char(number) for number in numbers)def hill_encrypt_decrypt(text, key_matrix, operationencrypt):执行希尔加密或解密操作。根据操作类型此函数使用key_matrix直接加密或首先计算其逆矩阵进行解密。block_size key_matrix.shape[0] # 确定密钥矩阵的大小用于分块大小text prepare_text(text, block_size) # 根据分块大小调整文本长度text_numbers text_to_numbers(text) # 将文本转换为数字序列result [] # 存储加密或解密结果的数字序列# 如果是解密操作计算密钥矩阵的逆矩阵if operation decrypt:key_matrix matrix_mod_inv(key_matrix, 29) # 对每个文本块执行矩阵乘法和模运算for i in range(0, len(text_numbers), block_size):block np.array(text_numbers[i:iblock_size])encrypted_block np.dot(key_matrix, block) % 29 # 模29保证结果在字母表范围内result.extend(encrypted_block)return numbers_to_text(result) # 将数字序列转换回文本# 主函数负责用户交互和调用加密/解密函数 def main():choice input(请选择操作\n1. 加密\n2. 解密\n) # 用户选择加密还是解密text input(请输入明文 if choice 1 else 请输入密文) # 获取用户输入的文本key_numbers create_numbers_from_string(alphabet, key_phrase, 0) # 根据密钥短语生成密钥数字序列# 尝试不同的密钥矩阵维度和重叠度进行加密/解密for dim in range(2, 5): # 维度从2到4for overlap in range(1, 5): # 重叠度从1到4if overlap dim:break # 如果重叠度大于维度则不再尝试try:key_matrix np.array(create_matrix_from_list(key_numbers, dim, overlap))if choice 1:encrypted hill_encrypt_decrypt(text, key_matrix, encrypt)print(f使用dim{dim}, overlap{overlap}加密后的密文{encrypted})else:decrypted hill_encrypt_decrypt(text, key_matrix,decrypt)print(f使用dim{dim}, overlap{overlap}解密后的明文{decrypted})except ValueError as e:print(e)break # 如果出现异常则停止尝试当前维度和重叠度的组合if __name__ __main__:main() # 运行主函数 请选择操作 1. 加密 2. 解密 1 请输入明文love and peaceee 使用dim2, overlap1加密后的密文....vveeddbbqqcc 使用dim2, overlap2加密后的密文....vveeddbbqqcc 使用dim3, overlap1加密后的密文 cgweozrcmhmrik, q 使用dim3, overlap2加密后的密文 hcwwezhrmmhrmi,u 使用dim3, overlap3加密后的密文 wwwzzzmmmrrr,,, 使用dim4, overlap1加密后的密文waoootu.epj,nv o 使用dim4, overlap2加密后的密文wspooq,uedhjnyt 使用dim4, overlap3加密后的密文wesaonqte.dpnjyv 使用dim4, overlap4加密后的密文wwwwooooeeeennnn1. 加密 2. 解密 2 请输入密文waoootu.epj,nv o Singular matrix 使用dim3, overlap1解密后的明文tpzhhnkhfxvqotthau 使用dim3, overlap2解密后的明文ftgczahelg .ielcjq Singular matrix 使用dim4, overlap1解密后的明文love and peaceee 使用dim4, overlap2解密后的明文e.nlnldaayiekhkb 使用dim4, overlap3解密后的明文znwwvkzandgqvdex Singular matrix代码文件util_create_matrix.py def create_matrix_from_list(numbers, dim4, overlap1):根据提供的数字列表、矩阵维度和重叠度生成指定维度的矩阵。参数:- numbers: 数字列表用于填充矩阵。- dim: 整数表示矩阵的维度例如2x2, 3x3, 4x4等。- overlap: 整数指定相邻行之间的重叠数字数量。返回:- 生成的矩阵为dim x dim大小。如果提供的数字不足以填满矩阵返回错误信息。# 计算根据维度和重叠度需要的数字总数total_numbers_needed dim * dim - (dim - 1) * overlap# 如果提供的数字不足以构成矩阵返回错误信息if len(numbers) total_numbers_needed:return 提供的数字不足以形成指定维度的矩阵。# 构造矩阵matrix []for i in range(dim):start_index i * (dim - overlap) # 计算当前行起始数字的索引end_index start_index dim # 计算当前行结束数字的索引row numbers[start_index:end_index] # 提取当前行的数字matrix.append(row) # 将当前行添加到矩阵中return matrix# 示例使用整数参数调用函数并打印结果 numbers_list [22, 22, 22, 28, 21, 4, 17, 24, 12, 20, 2, 7, 28, 13, 4, 19] dim 4 # 矩阵的维度 overlap 1 # 行之间的重叠数字数量 matrix create_matrix_from_list(numbers_list, dim, overlap) print(matrix)def create_numbers_from_string(alphabet, key_string, start0):根据给定的字母表和字符串返回一个数字列表表示字符串中每个字符在字母表中的位置。位置计数从start参数指定的数字开始。参数:- alphabet: 字符串定义可用字符的序列。- key_string: 字符串需要转换为数字列表的文本。- start: 整数数字列表的起始值默认为0。返回:- 数字列表其中包含key_string中每个字符对应的位置。return [alphabet.index(char) start for char in key_string]# 示例将字符串转换为数字列表并打印结果 alphabet abcdefghijklmnopqrstuvwxyz ,. print(create_numbers_from_string(alphabet, www.verymuch.net, 0))
http://www.pierceye.com/news/910257/

相关文章:

  • 潍坊市建设工程质量安全监督站网站网站建设的毕业设计
  • 建筑网站夜里几点维护怎么开发软件app软件
  • 厦门人才网官方网站wordpress 晒单
  • 网站不收录是什么原因网站建设与网页设计试卷
  • html网站模板资源2015做那个网站能致富
  • 设计导航精选最好的设计网站大全商城网站建设开发多少钱
  • 滨州j建设局网站投诉电话检察机关加强网站建设
  • 付费抽奖网站怎么做宁波网站推广营销
  • 单位的网站的建设个人网页制作策划书
  • 在中国可以做国外的域名网站吗企业网查询是什么
  • 网站开发在线浏览pdfwin7可以做网站吗
  • 手机上制作网站的软件巢湖有没有专门做网站的公司
  • 哪里有做企业网站的wordpress 主题类型
  • 什么是网站平台开发工具网站怎么做筛选功能的代码
  • 自建站 外贸军事内参消息
  • 化妆品网站建设实训总结坂田建设网站
  • 成都网站建设哪家专业嘉峪关市建设局网站
  • 企业策划 企业网站建设 品牌设计下载住小帮app看装修
  • wordpress文章内图片不显示不出来成都seo整站
  • 鞍钢节能公司网站开发陈仓网站建设
  • 手机网站怎样排版最好东莞常平招聘网最新招聘信息
  • 网站推广途径选择com域名和网站
  • 建设网站后如何上线免费的网站app下载
  • 哪些动物可以做网站名天津免费建站
  • 网站关键字优化技巧如何做推广麦当劳的网站
  • 广州公司注册场地要求网站怎么优化排名的方法
  • 自己做网站用什么软件建设银行网站联系电话
  • 做一个论坛网站需要多少钱推广型网站制作公司
  • 网站介绍页面网站建设怎么找客户资源
  • 我的百度网盘登录入口大兵seo博客