クラウド上で宝探しの地図を暗号化し保管する
任意のWolfram言語式を暗号化することができる.
Blowfishのメソッドを使った秘密のパスワードから強力な対称鍵を生成する.
In[1]:=
![Click for copyable input](assets.ja/encrypt-and-store-a-treasure-map-on-the-cloud/In_33.png)
skeletonKey = GenerateSymmetricKey["Avast ye!", Method -> "Blowfish"]
Out[1]=
![](assets.ja/encrypt-and-store-a-treasure-map-on-the-cloud/O_28.png)
生成された鍵を使って,宝の在り処を暗号化してGeoMarkerに保管し,GeoGraphicsを使って可視化する.
完全なWolfram言語入力を表示する
Out[2]=
![](assets.ja/encrypt-and-store-a-treasure-map-on-the-cloud/O_29.png)
In[3]:=
![Click for copyable input](assets.ja/encrypt-and-store-a-treasure-map-on-the-cloud/In_35.png)
hiddenTreasure = Encrypt[skeletonKey, treasureMap]
Out[3]=
![](assets.ja/encrypt-and-store-a-treasure-map-on-the-cloud/O_30.png)
局所鍵を使ってデータが安全に暗号化されたので,地図をWolfram Cloudにアップロードする.
In[4]:=
![Click for copyable input](assets.ja/encrypt-and-store-a-treasure-map-on-the-cloud/In_36.png)
stowed = CloudPut[hiddenTreasure]
追跡されないように,もとの地図と鍵をClearを使って削除する.
In[5]:=
![Click for copyable input](assets.ja/encrypt-and-store-a-treasure-map-on-the-cloud/In_37.png)
Clear[hiddenTreasure]
In[6]:=
![Click for copyable input](assets.ja/encrypt-and-store-a-treasure-map-on-the-cloud/In_38.png)
Clear[skeletonKey]
この鍵はパスワードを使って作られたものなので,もとの入力を使って新たな鍵を作成することが可能である.
In[7]:=
![Click for copyable input](assets.ja/encrypt-and-store-a-treasure-map-on-the-cloud/In_39.png)
newKey = GenerateSymmetricKey["Avast ye!", Method -> "Blowfish"]
Out[7]=
![](assets.ja/encrypt-and-store-a-treasure-map-on-the-cloud/O_32.png)
この新しい鍵を使って,クラウドに配備された地図を参照することができる.
In[8]:=
![Click for copyable input](assets.ja/encrypt-and-store-a-treasure-map-on-the-cloud/In_40.png)
reclaimedMap = Decrypt[newKey, CloudGet[stowed]]
Out[8]=
![](assets.ja/encrypt-and-store-a-treasure-map-on-the-cloud/O_33.png)
宝の在り処を抽出する.
In[9]:=
![Click for copyable input](assets.ja/encrypt-and-store-a-treasure-map-on-the-cloud/In_41.png)
treasureLocation = reclaimedMap[[3, 2]]
Out[9]=
![](assets.ja/encrypt-and-store-a-treasure-map-on-the-cloud/O_34.png)
車を運転する道順を尋ねる.
In[10]:=
![Click for copyable input](assets.ja/encrypt-and-store-a-treasure-map-on-the-cloud/In_42.png)
TravelDirections[{$GeoLocation, treasureLocation}]
![](assets.ja/index.ja/M_2.gif)
Out[10]=
![](assets.ja/encrypt-and-store-a-treasure-map-on-the-cloud/O_35.png)
海の上を運転して宝に行き着くことはできないので,GeoDistanceを使って距離を調べる.
In[11]:=
![Click for copyable input](assets.ja/encrypt-and-store-a-treasure-map-on-the-cloud/In_43.png)
GeoDistance[$GeoLocation, treasureLocation]
Out[11]=
![](assets.ja/encrypt-and-store-a-treasure-map-on-the-cloud/O_36.png)
この距離をもとに,宝に最も近い空港を見付ける.
In[12]:=
![Click for copyable input](assets.ja/encrypt-and-store-a-treasure-map-on-the-cloud/In_44.png)
airport = First[GeoNearest["Airport", treasureLocation]]
Out[12]=
![](assets.ja/encrypt-and-store-a-treasure-map-on-the-cloud/O_37.png)
その空港から宝までの距離.
In[13]:=
![Click for copyable input](assets.ja/encrypt-and-store-a-treasure-map-on-the-cloud/In_45.png)
GeoDistance[airport, treasureLocation]
Out[13]=
![](assets.ja/encrypt-and-store-a-treasure-map-on-the-cloud/O_38.png)