import pyffx # 定义手机号的格式 format_str = "#####{}#{}####" # 定义FPE算法的密钥和分组大小 key = b"my-secret-key" rounds = 10 block_size = 4 # 创建FFX对象并加密手机号 ffx = pyffx.String(key, alphabet='0123456789', length=len(format_str), rounds=rounds) encrypted_phone = ffx.encrypt(format_str.format('138', '0010', '1234'), block_size=block_size) # 输出加密后的手机号 print("加密后的手机号:", encrypted_phone)报错__init__() got an unexpected keyword argument 'rounds'
时间: 2024-03-06 13:46:52 浏览: 83
Docstrum算法的C # 实现
这个报错是因为pyffx的版本问题,其中的String函数在旧版本中不支持rounds参数。你可以升级pyffx到最新版本尝试解决该问题,或者使用下面的代码替换原本的加密部分代码:
```
from pyffx import FixedAlphabet, FFX
# 定义手机号的格式
format_str = "#####{}#{}####"
# 定义FPE算法的密钥和分组大小
key = b"my-secret-key"
block_size = 4
# 创建FFX对象并加密手机号
ffx = FFX(key, FixedAlphabet("0123456789"), len(format_str), base=10)
encrypted_phone = ffx.encrypt(format_str.format('138', '0010', '1234'), radix=10, rounds=10)
# 输出加密后的手机号
print("加密后的手机号:", encrypted_phone)
```
该代码使用了FFX类而不是String类来进行加密,同时指定了radix参数(表示进制)和base参数(表示FFX算法中使用的基数)来替代原来的参数。
阅读全文