Cifre e armazene um mapa do tesouro na nuvem
Qualquer expressão da Wolfram Linguagem pode ser cifrada.
Gere uma chave simétrica forte derivada de uma senha secreta usando o método Blowfish.
![Click for copyable input](assets.pt-br/encrypt-and-store-a-treasure-map-on-the-cloud/In_32.png)
skeletonKey = GenerateSymmetricKey["Avast ye!", Method -> "Blowfish"]
![](assets.pt-br/encrypt-and-store-a-treasure-map-on-the-cloud/O_27.png)
Cifre a localização do tesouro, armazenado em um GeoMarker e visualizado usando GeoGraphics, usando a chave gerada.
![](assets.pt-br/encrypt-and-store-a-treasure-map-on-the-cloud/O_28.png)
![Click for copyable input](assets.pt-br/encrypt-and-store-a-treasure-map-on-the-cloud/In_34.png)
hiddenTreasure = Encrypt[skeletonKey, treasureMap]
![](assets.pt-br/encrypt-and-store-a-treasure-map-on-the-cloud/O_29.png)
Agora que os dados estão cifrados de forma segura usando uma chave local, carregue o mapa na Wolfram Cloud.
![Click for copyable input](assets.pt-br/encrypt-and-store-a-treasure-map-on-the-cloud/In_35.png)
stowed = CloudPut[hiddenTreasure]
Para cobrir os rastros descarte o mapa original a chave usando Clear.
![Click for copyable input](assets.pt-br/encrypt-and-store-a-treasure-map-on-the-cloud/In_36.png)
Clear[hiddenTreasure]
![Click for copyable input](assets.pt-br/encrypt-and-store-a-treasure-map-on-the-cloud/In_37.png)
Clear[skeletonKey]
Como a chave foi derivada usando uma senha, você pode criar uma nova chave usando a entrada original.
![Click for copyable input](assets.pt-br/encrypt-and-store-a-treasure-map-on-the-cloud/In_38.png)
newKey = GenerateSymmetricKey["Avast ye!", Method -> "Blowfish"]
![](assets.pt-br/encrypt-and-store-a-treasure-map-on-the-cloud/O_31.png)
A nova chave agora pode ser usada para referir-se ao mapa implementado na nuvem.
![Click for copyable input](assets.pt-br/encrypt-and-store-a-treasure-map-on-the-cloud/In_39.png)
reclaimedMap = Decrypt[newKey, CloudGet[stowed]]
![](assets.pt-br/encrypt-and-store-a-treasure-map-on-the-cloud/O_32.png)
Extraia a localização do tesouro.
![Click for copyable input](assets.pt-br/encrypt-and-store-a-treasure-map-on-the-cloud/In_40.png)
treasureLocation = reclaimedMap[[3, 2]]
![](assets.pt-br/encrypt-and-store-a-treasure-map-on-the-cloud/O_33.png)
Pergunte por instruções de viagem.
![Click for copyable input](assets.pt-br/encrypt-and-store-a-treasure-map-on-the-cloud/In_41.png)
TravelDirections[{$GeoLocation, treasureLocation}]
![](assets.pt-br/index.pt-br/M_2.gif)
![](assets.pt-br/encrypt-and-store-a-treasure-map-on-the-cloud/O_34.png)
Como não existe uma rota de direção para o tesouro, calcule a distância usando GeoDistance.
![Click for copyable input](assets.pt-br/encrypt-and-store-a-treasure-map-on-the-cloud/In_42.png)
GeoDistance[$GeoLocation, treasureLocation]
![](assets.pt-br/encrypt-and-store-a-treasure-map-on-the-cloud/O_35.png)
Dada a distância, localize o aeroporto mais próximo ao tesouro.
![Click for copyable input](assets.pt-br/encrypt-and-store-a-treasure-map-on-the-cloud/In_43.png)
airport = First[GeoNearest["Airport", treasureLocation]]
![](assets.pt-br/encrypt-and-store-a-treasure-map-on-the-cloud/O_36.png)
A distância do aeroporto para o tesouro.
![Click for copyable input](assets.pt-br/encrypt-and-store-a-treasure-map-on-the-cloud/In_44.png)
GeoDistance[airport, treasureLocation]
![](assets.pt-br/encrypt-and-store-a-treasure-map-on-the-cloud/O_37.png)