如何用PPT来实现三维3D效果,附参数设置详解

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个简单的SPN加密算法的Python实现,使用PPT例子4.1中的参数设置: ```python # SPN加密算法的Python实现 import numpy as np # 定义参数 block_size = 16 # 分组长度 key_size = 64 # 密钥长度 rounds = 4 # 轮数 s_box = np.array([ [0x9, 0x4, 0xa, 0xb], [0xd, 0x1, 0x8, 0x5], [0x6, 0x2, 0x0, 0x3], [0xc, 0xe, 0xf, 0x7] ], dtype=np.uint8) # S盒 p_box = np.array([0, 4, 8, 12, 1, 5, 9, 13, 2, 6, 10, 14, 3, 7, 11, 15], dtype=np.uint8) # P盒 # 密钥扩展 def expand_key(key): key_schedule = [] for i in range(rounds): round_key = key >> (key_size - block_size) key_schedule.append(round_key) key = ((key << block_size) & ((1 << key_size) - 1)) | round_key return key_schedule # S盒层 def s_layer(state): return np.array([[s_box[x >> 4, x & 0xf] for x in row] for row in state], dtype=np.uint8) # P盒层 def p_layer(state): return np.array([[row[p_box[i]] for i in range(block_size)] for row in state], dtype=np.uint8) # 轮函数 def round_function(state, round_key): state = np.bitwise_xor(state, round_key) state = s_layer(state) state = p_layer(state) return state # SPN加密 def encrypt(plaintext, key): key_schedule = expand_key(key) state = np.frombuffer(plaintext.encode(), dtype=np.uint8).reshape(-1, block_size // 8) for i in range(rounds): state = round_function(state, key_schedule[i]) ciphertext = state.tobytes() return ciphertext.hex() # 测试 plaintext = "Hello, world!" key = 0x0123456789abcdef ciphertext = encrypt(plaintext, key) print("Plaintext:", plaintext) print("Ciphertext:", ciphertext) ``` 在以上代码中,我们使用numpy库来处理二进制数据,首先定义了SPN算法的参数,包括分组长度、密钥长度、轮数、S盒和P盒。然后我们实现了密钥扩展、S盒层、P盒层和轮函数等基本操作。最后定义了SPN加密函数,将明文转换为二进制数据,然后进行轮函数迭代,得到密文并返回。在测试部分,我们使用一个简单的字符串作为明文,然后对其进行加密,并输出明文和密文。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值