['0xb7', '0xd7', '0xa4', '0x4b']怎么去掉'',python

时间: 2024-04-16 22:21:52 浏览: 15
你可以使用字符串的replace()方法来去掉''。这个方法可以将指定的子字符串替换为另一个子字符串。在这种情况下,你可以将''替换为空字符串。下面是一个示例代码: ```python lst = ['0xb7', '0xd7', '0xa4', '0x4b'] lst = [x.replace("'", "") for x in lst] print(lst) # 输出:['0xb7', '0xd7', '0xa4', '0x4b'] ``` 这段代码使用列表推导式将列表中的每个元素都替换为没有''的版本。最后,它打印出修改后的列表。
相关问题

用python实现sm4

SM4是一种对称加密算法,主要用于数据的加密和解密。下面是一个Python实现SM4加密算法的示例代码: ```python # -*- coding: utf-8 -*- """ SM4加密算法实现 """ import struct # S盒 S_BOX = [ 0xd6, 0x90, 0xe9, 0xfe, 0xcc, 0xe1, 0x3d, 0xb7, 0x16, 0xb6, 0x14, 0xc2, 0x28, 0xfb, 0x2c, 0x05, 0x2b, 0x67, 0x9a, 0x76, 0x2a, 0xbe, 0x04, 0xc3, 0xaa, 0x44, 0x13, 0x26, 0x49, 0x86, 0x06, 0x99, 0x9c, 0x42, 0x50, 0xf4, 0x91, 0xef, 0x98, 0x7a, 0x33, 0x54, 0x0b, 0x43, 0xed, 0xcf, 0xac, 0x62, 0xe4, 0xb3, 0x1c, 0xa9, 0xc9, 0x08, 0xe8, 0x95, 0x80, 0xdf, 0x94, 0xfa, 0x75, 0x8f, 0x3f, 0xa6, 0x47, 0x07, 0xa7, 0xfc, 0xf3, 0x73, 0x17, 0xba, 0x83, 0x59, 0x3c, 0x19, 0xe6, 0x85, 0x4f, 0xa8, 0x68, 0x6b, 0x81, 0xb2, 0x71, 0x64, 0xda, 0x8b, 0xf8, 0xeb, 0x0f, 0x4b, 0x70, 0x56, 0x9d, 0x35, 0x1e, 0x24, 0x0e, 0x5e, 0x63, 0x58, 0xd1, 0xa2, 0x25, 0x22, 0x7c, 0x3b, 0x01, 0x21, 0x78, 0x87, 0xd4, 0x00, 0x46, 0x57, 0x9f, 0xd3, 0x27, 0x52, 0x4c, 0x36, 0x02, 0xe7, 0xa0, 0xc4, 0xc8, 0x9e, 0xea, 0xbf, 0x8a, 0xd2, 0x40, 0xc7, 0x38, 0xb5, 0xa3, 0xf7, 0xf2, 0xce, 0xf9, 0x61, 0x15, 0xa1, 0xe0, 0xae, 0x5d, 0xa4, 0x9b, 0x34, 0x1a, 0x55, 0xad, 0x93, 0x32, 0x30, 0xf5, 0x8c, 0xb1, 0xe3, 0x1d, 0xf6, 0xe2, 0x2e, 0x82, 0x66, 0xca, 0x60, 0xc0, 0x29, 0x23, 0xab, 0x0d, 0x53, 0x4e, 0x6f, 0xd5, 0xdb, 0x37, 0x45, 0xde, 0xfd, 0x8e, 0x2f, 0x03, 0xff, 0x6a, 0x72, 0x6d, 0x6c, 0x5b, 0x51, 0x8d, 0x1b, 0xaf, 0x92, 0xbb, 0xdd, 0xbc, 0x7f, 0x11, 0xd9, 0x5c, 0x41, 0x1f, 0x10, 0x5a, 0xd8, 0x0a, 0xc1, 0x31, 0x88, 0xa5, 0xcd, 0x7b, 0xbd, 0x2d, 0x74, 0xd0, 0x12, 0xb8, 0xe5, 0xb4, 0xb0, 0x89, 0x69, 0x97, 0x4a, 0x0c, 0x96, 0x77, 0x7e, 0x65, 0xb9, 0xf1, 0x09, 0xc5, 0x6e, 0xc6, 0x84, 0x18, 0xf0, 0x7d, 0xec, 0x3a, 0xdc, 0x4d, 0x20, 0x79, 0xee, 0x5f, 0x3e, 0xd7, 0xcb, 0x39, 0x48 ] # 系统参数 FK = [ 0xa3b1bac6, 0x56aa3350, 0x677d9197, 0xb27022dc ] # 固定参数 CK = [ 0x00070e15, 0x1c232a31, 0x383f464d, 0x545b6269, 0x70777e85, 0x8c939aa1, 0xa8afb6bd, 0xc4cbd2d9, 0xe0e7eef5, 0xfc030a11, 0x181f262d, 0x343b4249, 0x50575e65, 0x6c737a81, 0x888f969d, 0xa4abb2b9, 0xc0c7ced5, 0xdce3eaf1, 0xf8ff060d, 0x141b2229, 0x30373e45, 0x4c535a61, 0x686f767d, 0x848b9299, 0xa0a7aeb5, 0xbcc3cad1, 0xd8dfe6ed, 0xf4fb0209, 0x10171e25, 0x2c333a41, 0x484f565d, 0x646b7279 ] def get_u32_be(data): """ 获取4字节的大端序整数 """ return struct.unpack('>I', data)[0] def put_u32_be(num): """ 将4字节的整数转换成大端序字节数组 """ return struct.pack('>I', num) def sm4_key_schedule(key): """ SM4密钥扩展 """ rk = [0] * 32 k = [0] * 4 k[0] = get_u32_be(key[0:4]) k[1] = get_u32_be(key[4:8]) k[2] = get_u32_be(key[8:12]) k[3] = get_u32_be(key[12:16]) for i in range(32): if i < 16: rk[i] = k[i % 4] ^ FK[i] else: a = rk[i - 2] b = rk[i - 1] c = rk[i - 15] d = rk[i - 16] tmp = (a ^ b ^ c ^ CK[i - 16]) & 0xffffffff rk[i] = (tmp << 13 | tmp >> 19) ^ (rk[i - 7] << 3 | rk[i - 7] >> 29) ^ (rk[i - 14] << 9 | rk[i - 14] >> 23) return rk def sm4_f(x0, x1, x2, x3, rk): """ SM4轮函数 """ # T盒变换 t = x1 ^ x2 ^ x3 ^ rk a = b = c = d = 0 for i in range(8): a = (t >> 24) & 0xff b = (t >> 16) & 0xff c = (t >> 8) & 0xff d = t & 0xff index = (a << 16 | b << 8 | c) << 1 y = S_BOX[index] << 24 | S_BOX[index + 1] << 16 | S_BOX[index + 2] << 8 | S_BOX[index + 3] t = y ^ ((t << 13 | t >> 19) ^ (t << 23 | t >> 9)) # 线性变换 r = (t >> 24) & 0xff | (t >> 8) & 0xff00 | (t << 8) & 0xff0000 | (t << 24) & 0xff000000 return r ^ x0 def sm4_encrypt_block(input_data, rk): """ SM4加密单个分组 """ x = [0] * 4 x[0] = get_u32_be(input_data[0:4]) x[1] = get_u32_be(input_data[4:8]) x[2] = get_u32_be(input_data[8:12]) x[3] = get_u32_be(input_data[12:16]) for i in range(32): tmp = x[1] ^ x[2] ^ x[3] ^ rk[i] x[0] = sm4_f(x[0], x[1], x[2], x[3], rk[i]) x[0], x[1], x[2], x[3] = tmp, x[0], x[1], x[2] # 将加密后的4个32位整数转换成16字节的字节数组 return put_u32_be(x[3]) + put_u32_be(x[2]) + put_u32_be(x[1]) + put_u32_be(x[0]) def sm4_encrypt(key, input_data): """ SM4加密 """ rk = sm4_key_schedule(key) input_data_len = len(input_data) block_count = (input_data_len + 15) // 16 # 计算分组数量 output_data = b'' # 对每个分组进行加密 for i in range(block_count): block_data = input_data[i * 16:(i + 1) * 16] if len(block_data) < 16: padding_len = 16 - len(block_data) block_data += bytes([padding_len] * padding_len) output_data += sm4_encrypt_block(block_data, rk) return output_data if __name__ == '__main__': key = b'0123456789abcdef' input_data = b'Hello, SM4!' output_data = sm4_encrypt(key, input_data) print(output_data.hex()) ``` 示例中实现了SM4加密算法的核心部分,使用时需要调用 `sm4_encrypt` 函数,传入密钥和要加密的数据。加密后的数据以字节串的形式返回。

python如何实现sm4-ofb加解密算法

SM4是一种国密算法,OFB是一种加密模式,可以将SM4算法和OFB模式结合起来实现SM4-OFB加密算法。下面是一个简单的Python实现: ```python from Crypto.Cipher import AES from Crypto.Util.Padding import pad, unpad import binascii # SM4算法的S盒 SboxTable = [ 0xd6, 0x90, 0xe9, 0xfe, 0xcc, 0xe1, 0x3d, 0xb7, 0x16, 0xb6, 0x14, 0xc2, 0x28, 0xfb, 0x2c, 0x05, 0x2b, 0x67, 0x9a, 0x76, 0x2a, 0xbe, 0x04, 0xc3, 0xaa, 0x44, 0x13, 0x26, 0x49, 0x86, 0x06, 0x99, 0x9c, 0x42, 0x50, 0xf4, 0x91, 0xef, 0x98, 0x7a, 0x33, 0x54, 0x0b, 0x43, 0xed, 0xcf, 0xac, 0x62, 0xe4, 0xb3, 0x1c, 0xa9, 0xc9, 0x08, 0xe8, 0x95, 0x80, 0xdf, 0x94, 0xfa, 0x75, 0x8f, 0x3f, 0xa6, 0x47, 0x07, 0xa7, 0xfc, 0xf3, 0x73, 0x17, 0xba, 0x83, 0x59, 0x3c, 0x19, 0xe6, 0x85, 0x4f, 0xa8, 0x68, 0x6b, 0x81, 0xb2, 0x71, 0x64, 0xda, 0x8b, 0xf8, 0xeb, 0x0f, 0x4b, 0x70, 0x56, 0x9d, 0x35, 0x1e, 0x24, 0x0e, 0x5e, 0x63, 0x58, 0xd1, 0xa2, 0x25, 0x22, 0x7c, 0x3b, 0x01, 0x21, 0x78, 0x87, 0xd4, 0x00, 0x46, 0x57, 0x9f, 0xd3, 0x27, 0x52, 0x4c, 0x36, 0x02, 0xe7, 0xa0, 0xc4, 0xc8, 0x9e, 0xea, 0xbf, 0x8a, 0xd2, 0x40, 0xc7, 0x38, 0xb5, 0xa3, 0xf7, 0xf2, 0xce, 0xf9, 0x61, 0x15, 0xa1, 0xe0, 0xae, 0x5d, 0xa4, 0x9b, 0x34, 0x1a, 0x55, 0xad, 0x93, 0x32, 0x30, 0xf5, 0x8c, 0xb1, 0xe3, 0x1d, 0xf6, 0xe2, 0x2e, 0x82, 0x66, 0xca, 0x60, 0xc0, 0x29, 0x23, 0xab, 0x0d, 0x53, 0x4e, 0x6f, 0xd5, 0xdb, 0x37, 0x45, 0xde, 0xfd, 0x8e, 0x2f, 0x03, 0xff, 0x6a, 0x72, 0x6d, 0x6c, 0x5b, 0x51, 0x8d, 0x1b, 0xaf, 0x92, 0xbb, 0xdd, 0xbc, 0x7f, 0x11, 0xd9, 0x5c, 0x41, 0x1f, 0x10, 0x5a, 0xd8, 0x0a, 0xc1, 0x31, 0x88, 0xa5, 0xcd, 0x7b, 0xbd, 0x2d, 0x74, 0xd0, 0x12, 0xb8, 0xe5, 0xb4, 0xb0, 0x89, 0x69, 0x97, 0x4a, 0x0c, 0x96, 0x77, 0x7e, 0x65, 0xb9, 0xf1, 0x09, 0xc5, 0x6e, 0xc6, 0x84, 0x18, 0xf0, 0x7d, 0xec, 0x3a, 0xdc, 0x4d, 0x20, 0x79, 0xee, 0x5f, 0x3e, 0xd7, 0xcb, 0x39, 0x48 ] # SM4算法的T盒 FK = [ 0xa3b1bac6, 0x56aa3350, 0x677d9197, 0xb27022dc ] # SM4算法的S盒变换 def Sbox(x): return (SboxTable[(x >> 24) & 0xff] << 24) | (SboxTable[(x >> 16) & 0xff] << 16) | \ (SboxTable[(x >> 8) & 0xff] << 8) | SboxTable[x & 0xff] # SM4算法的L函数 def L(x): return x ^ ((x << 2) | (x >> 30)) ^ ((x << 10) | (x >> 22)) ^ ((x << 18) | (x >> 14)) ^ ((x << 24) | (x >> 8)) # SM4算法的轮函数 def F(x0, x1, x2, x3, rk): return x0 ^ L(x1 ^ x2 ^ x3 ^ rk) # SM4算法的密钥扩展函数 def KeySchedule(key): rk = [0] * 32 k = [0] * 4 for i in range(4): k[i] = (key[(i << 2)] << 24) | (key[(i << 2) + 1] << 16) | (key[(i << 2) + 2] << 8) | key[(i << 2) + 3] for i in range(32): if i < 16: rk[i] = k[i] else: tmp = rk[i - 1] if i % 4 == 0: tmp = Sbox(tmp) ^ FK[(i // 4) - 1] rk[i] = rk[i - 16] ^ tmp return rk # SM4算法的加密函数 def Encrypt(input, key): rk = KeySchedule(key) ct = [0] * 4 pt = [0] * 4 for i in range(4): pt[i] = (input[(i << 2)] << 24) | (input[(i << 2) + 1] << 16) | (input[(i << 2) + 2] << 8) | input[(i << 2) + 3] for i in range(32): ct[0], ct[1], ct[2], ct[3] = F(pt[0], pt[1], pt[2], pt[3], rk[i]) pt[0], pt[1], pt[2], pt[3] = ct[0], ct[1], ct[2], ct[3] output = [0] * 16 for i in range(4): output[(i << 2)] = ct[i] >> 24 output[(i << 2) + 1] = (ct[i] >> 16) & 0xff output[(i << 2) + 2] = (ct[i] >> 8) & 0xff output[(i << 2) + 3] = ct[i] & 0xff return output # SM4算法的解密函数 def Decrypt(input, key): rk = KeySchedule(key) ct = [0] * 4 pt = [0] * 4 for i in range(4): ct[i] = (input[(i << 2)] << 24) | (input[(i << 2) + 1] << 16) | (input[(i << 2) + 2] << 8) | input[(i << 2) + 3] for i in range(31, -1, -1): pt[0], pt[1], pt[2], pt[3] = F(ct[0], ct[1], ct[2], ct[3], rk[i]) ct[0], ct[1], ct[2], ct[3] = pt[0], pt[1], pt[2], pt[3] output = [0] * 16 for i in range(4): output[(i << 2)] = ct[i] >> 24 output[(i << 2) + 1] = (ct[i] >> 16) & 0xff output[(i << 2) + 2] = (ct[i] >> 8) & 0xff output[(i << 2) + 3] = ct[i] & 0xff return output # OFB加密模式 def OFB_Encrypt(data, key, iv): cipher = [] block = iv for i in range(len(data) // 16): block = Encrypt(block, key) cipher_block = [data[j] ^ block[j] for j in range(16)] cipher.extend(cipher_block) return cipher # OFB解密模式 def OFB_Decrypt(cipher, key, iv): data = [] block = iv for i in range(len(cipher) // 16): block = Encrypt(block, key) data_block = [cipher[j] ^ block[j] for j in range(16)] data.extend(data_block) return data # 测试代码 if __name__ == '__main__': key = binascii.unhexlify('0123456789abcdeffedcba9876543210') iv = binascii.unhexlify('0123456789abcdef') data = b'This is a test message' data = pad(data, 16) cipher = OFB_Encrypt(data, key, iv) print(binascii.hexlify(cipher)) plain = OFB_Decrypt(cipher, key, iv) plain = unpad(plain, 16) print(plain) ``` 以上代码实现了SM4算法和OFB加密模式的结合,可以进行SM4-OFB加解密。

相关推荐

最新推荐

recommend-type

NexusSetup.exe是Nexus设备设置程序的执行文件

这款Windows Dock栏工具解决了窗口遮挡问题,支持将窗口最小化至Dock栏,相比mydock稳定性更好,而相比bitdock体积更小,是一款适中的优秀选择,值得推荐。。内容来源于网络分享,如有侵权请联系我删除。另外如果没有积分的同学需要下载,请私信我。
recommend-type

某航天所智能制造实施方案(交付版).pptx

某航天所智能制造实施方案(交付版).pptx
recommend-type

opencv运动目标检测与跟踪源代码运动目标的检测与跟踪 ,有详细源代码。.rar

opencv运动目标检测与跟踪源代码运动目标的检测与跟踪 ,有详细源代码。
recommend-type

AI视觉智慧城管解决方案.pptx

AI视觉智慧城管解决方案.pptx
recommend-type

大恒图像HN-2M系列工业镜头3D图纸.rar

大恒图像HN-2M系列工业镜头3D图纸
recommend-type

BSC关键绩效财务与客户指标详解

BSC(Balanced Scorecard,平衡计分卡)是一种战略绩效管理系统,它将企业的绩效评估从传统的财务维度扩展到非财务领域,以提供更全面、深入的业绩衡量。在提供的文档中,BSC绩效考核指标主要分为两大类:财务类和客户类。 1. 财务类指标: - 部门费用的实际与预算比较:如项目研究开发费用、课题费用、招聘费用、培训费用和新产品研发费用,均通过实际支出与计划预算的百分比来衡量,这反映了部门在成本控制上的效率。 - 经营利润指标:如承保利润、赔付率和理赔统计,这些涉及保险公司的核心盈利能力和风险管理水平。 - 人力成本和保费收益:如人力成本与计划的比例,以及标准保费、附加佣金、续期推动费用等与预算的对比,评估业务运营和盈利能力。 - 财务效率:包括管理费用、销售费用和投资回报率,如净投资收益率、销售目标达成率等,反映公司的财务健康状况和经营效率。 2. 客户类指标: - 客户满意度:通过包装水平客户满意度调研,了解产品和服务的质量和客户体验。 - 市场表现:通过市场销售月报和市场份额,衡量公司在市场中的竞争地位和销售业绩。 - 服务指标:如新契约标保完成度、续保率和出租率,体现客户服务质量和客户忠诚度。 - 品牌和市场知名度:通过问卷调查、公众媒体反馈和总公司级评价来评估品牌影响力和市场认知度。 BSC绩效考核指标旨在确保企业的战略目标与财务和非财务目标的平衡,通过量化这些关键指标,帮助管理层做出决策,优化资源配置,并驱动组织的整体业绩提升。同时,这份指标汇总文档强调了财务稳健性和客户满意度的重要性,体现了现代企业对多维度绩效管理的重视。
recommend-type

管理建模和仿真的文件

管理Boualem Benatallah引用此版本:布阿利姆·贝纳塔拉。管理建模和仿真。约瑟夫-傅立叶大学-格勒诺布尔第一大学,1996年。法语。NNT:电话:00345357HAL ID:电话:00345357https://theses.hal.science/tel-003453572008年12月9日提交HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaire
recommend-type

【实战演练】俄罗斯方块:实现经典的俄罗斯方块游戏,学习方块生成和行消除逻辑。

![【实战演练】俄罗斯方块:实现经典的俄罗斯方块游戏,学习方块生成和行消除逻辑。](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/70a49cc62dcc46a491b9f63542110765~tplv-k3u1fbpfcp-zoom-in-crop-mark:1512:0:0:0.awebp) # 1. 俄罗斯方块游戏概述** 俄罗斯方块是一款经典的益智游戏,由阿列克谢·帕基特诺夫于1984年发明。游戏目标是通过控制不断下落的方块,排列成水平线,消除它们并获得分数。俄罗斯方块风靡全球,成为有史以来最受欢迎的视频游戏之一。 # 2.
recommend-type

卷积神经网络实现手势识别程序

卷积神经网络(Convolutional Neural Network, CNN)在手势识别中是一种非常有效的机器学习模型。CNN特别适用于处理图像数据,因为它能够自动提取和学习局部特征,这对于像手势这样的空间模式识别非常重要。以下是使用CNN实现手势识别的基本步骤: 1. **输入数据准备**:首先,你需要收集或获取一组带有标签的手势图像,作为训练和测试数据集。 2. **数据预处理**:对图像进行标准化、裁剪、大小调整等操作,以便于网络输入。 3. **卷积层(Convolutional Layer)**:这是CNN的核心部分,通过一系列可学习的滤波器(卷积核)对输入图像进行卷积,以
recommend-type

绘制企业战略地图:从财务到客户价值的六步法

"BSC资料.pdf" 战略地图是一种战略管理工具,它帮助企业将战略目标可视化,确保所有部门和员工的工作都与公司的整体战略方向保持一致。战略地图的核心内容包括四个相互关联的视角:财务、客户、内部流程和学习与成长。 1. **财务视角**:这是战略地图的最终目标,通常表现为股东价值的提升。例如,股东期望五年后的销售收入达到五亿元,而目前只有一亿元,那么四亿元的差距就是企业的总体目标。 2. **客户视角**:为了实现财务目标,需要明确客户价值主张。企业可以通过提供最低总成本、产品创新、全面解决方案或系统锁定等方式吸引和保留客户,以实现销售额的增长。 3. **内部流程视角**:确定关键流程以支持客户价值主张和财务目标的实现。主要流程可能包括运营管理、客户管理、创新和社会责任等,每个流程都需要有明确的短期、中期和长期目标。 4. **学习与成长视角**:评估和提升企业的人力资本、信息资本和组织资本,确保这些无形资产能够支持内部流程的优化和战略目标的达成。 绘制战略地图的六个步骤: 1. **确定股东价值差距**:识别与股东期望之间的差距。 2. **调整客户价值主张**:分析客户并调整策略以满足他们的需求。 3. **设定价值提升时间表**:规划各阶段的目标以逐步缩小差距。 4. **确定战略主题**:识别关键内部流程并设定目标。 5. **提升战略准备度**:评估并提升无形资产的战略准备度。 6. **制定行动方案**:根据战略地图制定具体行动计划,分配资源和预算。 战略地图的有效性主要取决于两个要素: 1. **KPI的数量及分布比例**:一个有效的战略地图通常包含20个左右的指标,且在四个视角之间有均衡的分布,如财务20%,客户20%,内部流程40%。 2. **KPI的性质比例**:指标应涵盖财务、客户、内部流程和学习与成长等各个方面,以全面反映组织的绩效。 战略地图不仅帮助管理层清晰传达战略意图,也使员工能更好地理解自己的工作如何对公司整体目标产生贡献,从而提高执行力和组织协同性。