对藏宝图进行加密并保存到云端
任意 Wolfram 语言表达式都可被加密.
使用 Blowfish 方法生成一个来自私密密码的强对称密钥.
In[1]:=
skeletonKey = GenerateSymmetricKey["Avast ye!", Method -> "Blowfish"]
Out[1]=
用生成的密钥对宝藏的位置进行加密,保存在 GeoMarker 中并用 GeoGraphics 可视化.
显示完整的 Wolfram 语言输入
Out[2]=
In[3]:=
hiddenTreasure = Encrypt[skeletonKey, treasureMap]
Out[3]=
现在,通过使用本地密钥,数据已被安全加密,可以将地图上传到 Wolfram 云端.
In[4]:=
stowed = CloudPut[hiddenTreasure]
为掩其踪,用 Clear 丢弃原来的地图和密钥.
In[5]:=
Clear[hiddenTreasure]
In[6]:=
Clear[skeletonKey]
因为密钥来自于一个密码,可以使用原来的输入创建一个新的密钥.
In[7]:=
newKey = GenerateSymmetricKey["Avast ye!", Method -> "Blowfish"]
Out[7]=
现在使用新的密钥取出部署在云端的地图.
In[8]:=
reclaimedMap = Decrypt[newKey, CloudGet[stowed]]
Out[8]=
提取宝藏的位置.
In[9]:=
treasureLocation = reclaimedMap[[3, 2]]
Out[9]=
查询行车路线.
In[10]:=
TravelDirections[{$GeoLocation, treasureLocation}]
Out[10]=
无路可以到达宝藏,下面用 GeoDistance 计算出距离.
In[11]:=
GeoDistance[$GeoLocation, treasureLocation]
Out[11]=
基于这个距离,查找离宝藏最近的机场.
In[12]:=
airport = First[GeoNearest["Airport", treasureLocation]]
Out[12]=
从该机场到宝藏的距离.
In[13]:=
GeoDistance[airport, treasureLocation]
Out[13]=