建议通过python进行加密的方法
谢谢你的时间和努力,但我想我可能把我想要的东西送错了,是我的错 长话短说,有什么方法可以加密某个字符串或整个数组建议通过python进行加密的方法,python,Python,谢谢你的时间和努力,但我想我可能把我想要的东西送错了,是我的错 长话短说,有什么方法可以加密某个字符串或整个数组 { "gender": "male", "phone-number": "1234567890", "job": "student", "location": { "county": "LA-county", "town": "sunvalley", "country": "USA", "
{
"gender": "male",
"phone-number": "1234567890",
"job": "student",
"location": {
"county": "LA-county",
"town": "sunvalley",
"country": "USA",
"apartment-number": "13579abcdefg"
},
"item": {
"item-type": "cloth",
"item-size": "large",
"item-number": "xyz24680abc",
"item-material": "cotton"
},
"hairstyle": "long",
"alive": "true",
}
假设公寓号码:13579abcdefg需要加密。我可以使用下面的fernet吗
from cryptography.fernet import Fernet
key = Fernet.generate_key()
f = Fernet(key)
encrypt_value = f.encrypt(b"YourString")
f.decrypt(encrypt_value)
我听到一些人提到base64。。。在加密某些值时,您建议使用哪种方法?只需获取前三个字符、三个点,然后是最后三个字符
def审查(字符串):
返回字符串[:3]+“…”+字符串[-3:]
数据[“电话号码”]=检查员(数据[“电话号码”])
数据[“公寓号”]=检查员(数据[“项目号”])
数据[“位置”][“公寓号”]=检查员(数据[“位置”][“公寓号”])
此代码将在JSON上运行,并将解析JSON中的键中的名称,这些键的值将以问题中指定的格式更改为列表中的值
import json
with open('filename.json') as f:
data = json.load(f)
values_to_change = ["phone-number", "apartment-number", "item-number"]
for k, v in data.items():
if isinstance(v, str):
if k in values_to_change:
data[k] = "{}...{}".format(v[:3], v[-3:])
elif isinstance(v, dict):
for kv, vv in v.items():
if kv in values_to_change:
data[k][kv] = "{}...{}".format(vv[:3], vv[-3:])
with open('newfilename.json', 'w') as f:
json.dump(data, f, indent=2)
输出
{'gender': 'male',
'phone-number': '123...890',
'job': 'student',
'location': {'county': 'LA-county',
'town': 'sunvalley',
'country': 'USA',
'apartment-number': '135...efg'},
'item': {'item-type': 'cloth',
'item-size': 'large',
'item-number': 'xyz...abc',
'item-material': 'cotton'},
'hairstyle': 'long',
'alive': 'true'}
下面是一个解决方案,它将解释嵌套的JSON:
def掩码敏感(有效负载,字段,n_前=3,n_后=3):
out={}
对于有效载荷中的k,v.items():
#如果它是一个dict,递归
如果存在(v,dict):
out[k]=掩码敏感(v、字段、n\u前、n\u后)
#这假定字段是字符串,而不是iterable
#但您始终可以添加逻辑以允许整数、列表等。
elif k在字段中:
out[k]=v[:n_前面]+“…”+v[-n_后面:]
其他:
out[k]=v
返回
您可能需要为某些内容编写逻辑,例如,如果字段长度小于3个字符,您希望如何填充敏感信息?但这给了你一个很好的起点。例如:
导入pprint
>>>pprint.pprint(掩码敏感(x,[“电话号码”,“公寓号码]))
{'live':'true',
‘性别’:‘男性’,
‘发型’:‘长’,
'item':{'item-material':'cotton',
“项目编号”:“xyz24680abc”,
“项目大小”:“大”,
“项目类型”:“布料”},
“工作”:“学生”,
'location':{'partment-number':'135…efg',
“国家”:“美国”,
“县”:“洛杉矶县”,
“城镇”:“太阳谷”},
'电话号码':'123…890'}
使用@Clinton Graham,再加上一些编辑,你会得到
类型错误:不可损坏的类型:'slice'
否则,类似这样的东西应该可以工作
import json
import pandas as pd
with open('filename.json') as f:
data = json.load(f)
def reformat(data):
return data.values[:, 3] + "..." + data.valies[-3:]
data["phone-number"] = reformat(data["phone-number"])
data["item"]["item-number"] = reformat(data["item"]["item-number"])
data["location"]["apartment-number"] = reformat(data["location"]["apartment-number"])
print(reformat(data))
解析dict在这段代码中非常重要。parse_dict方法将解析dict中的所有元素。如果数据中的任何元素的任何类型都是dict,那么我们将使用递归,再次调用parse_dict来解析内部dict。 在此之后,我们检查键是否为[“电话号码”、“公寓号码”、“项目编号”]中的一个,如果是,则将其值更改为所需格式 这样,如果将来我们想更改除[“电话号码”、“公寓号码”、“商品号”]之外的任何其他键,那么我们只需在列表中添加新键,此代码就可以工作
import json
def parse_dict(data):
for key, value in data.items():
if type(value) == dict:
parse_dict(value)
if key in ["phone-number", "apartment-number", "item-number"]:
data[key] = value[:3] + "..." + value[-3:]
def main():
with open('sample.json') as f:
data = json.load(f)
parse_dict(data)
print("*****: ", data)
with open('newfilename.json', 'w') as f:
json.dump(data, f, indent=2)
main()
现在应该可以用了。我不知道
“公寓号”
在“位置”
。