Wolfram 语言

系统级功能

对藏宝图进行加密并保存到云端

任意 Wolfram 语言表达式都可被加密.

使用 Blowfish 方法生成一个来自私密密码的强对称密钥.

In[1]:=
Click for copyable input
skeletonKey = GenerateSymmetricKey["Avast ye!", Method -> "Blowfish"]
Out[1]=

用生成的密钥对宝藏的位置进行加密,保存在 GeoMarker 中并用 GeoGraphics 可视化.

显示完整的 Wolfram 语言输入
In[2]:=
Click for copyable input
treasureMap = GeoGraphics[{GeoMarker[GeoPosition[{15.9429, -86.5031}], Text[Style["x", FontFamily -> "Bradley Hand", FontSize -> 24]]]}, FrameLabel -> "Where the Gold is Buried", Frame -> True, ImageSize -> 300, GeoBackground -> "StreetMapNoLabels"]
Out[2]=
In[3]:=
Click for copyable input
hiddenTreasure = Encrypt[skeletonKey, treasureMap]
Out[3]=

现在,通过使用本地密钥,数据已被安全加密,可以将地图上传到 Wolfram 云端.

In[4]:=
Click for copyable input
stowed = CloudPut[hiddenTreasure]
Out[4]=

为掩其踪,用 Clear 丢弃原来的地图和密钥.

In[5]:=
Click for copyable input
Clear[hiddenTreasure]
In[6]:=
Click for copyable input
Clear[skeletonKey]

因为密钥来自于一个密码,可以使用原来的输入创建一个新的密钥.

In[7]:=
Click for copyable input
newKey = GenerateSymmetricKey["Avast ye!", Method -> "Blowfish"]
Out[7]=

现在使用新的密钥取出部署在云端的地图.

In[8]:=
Click for copyable input
reclaimedMap = Decrypt[newKey, CloudGet[stowed]]
Out[8]=

提取宝藏的位置.

In[9]:=
Click for copyable input
treasureLocation = reclaimedMap[[3, 2]]
Out[9]=

查询行车路线.

In[10]:=
Click for copyable input
TravelDirections[{$GeoLocation, treasureLocation}]
Out[10]=

无路可以到达宝藏,下面用 GeoDistance 计算出距离.

In[11]:=
Click for copyable input
GeoDistance[$GeoLocation, treasureLocation]
Out[11]=

基于这个距离,查找离宝藏最近的机场.

In[12]:=
Click for copyable input
airport = First[GeoNearest["Airport", treasureLocation]]
Out[12]=

从该机场到宝藏的距离.

In[13]:=
Click for copyable input
GeoDistance[airport, treasureLocation]
Out[13]=

相关范例

de en es fr ja ko pt-br ru