建议通过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()

现在应该可以用了。我不知道
“公寓号”
“位置”