Шифровка и хранение карты сокровищ в облаке
Любое выражение на языке Wolfram Language может быть зашифровано.
Сгенерируйте сильный симметричный ключ, полученный из тайного пароля при помощи метода Blowfish.
![Click for copyable input](assets.ru/encrypt-and-store-a-treasure-map-on-the-cloud/In_32.png)
skeletonKey = GenerateSymmetricKey["Avast ye!", Method -> "Blowfish"]
![](assets.ru/encrypt-and-store-a-treasure-map-on-the-cloud/O_27.png)
Зашифруйте расположение сокровища, хранящегося в GeoMarker, и визуализируйте его, используя GeoGraphics, при помощи созданного ключа.
![](assets.ru/encrypt-and-store-a-treasure-map-on-the-cloud/O_28.png)
![Click for copyable input](assets.ru/encrypt-and-store-a-treasure-map-on-the-cloud/In_34.png)
hiddenTreasure = Encrypt[skeletonKey, treasureMap]
![](assets.ru/encrypt-and-store-a-treasure-map-on-the-cloud/O_29.png)
Теперь, когда данные безопасно зашифрованы при помощи локального ключа, загрузите карту в облако Wolfram Cloud.
![Click for copyable input](assets.ru/encrypt-and-store-a-treasure-map-on-the-cloud/In_35.png)
stowed = CloudPut[hiddenTreasure]
Для того, чтобы засекретить ценную информацию, удалите оригинальную карту и ключ, используя Clear.
![Click for copyable input](assets.ru/encrypt-and-store-a-treasure-map-on-the-cloud/In_36.png)
Clear[hiddenTreasure]
![Click for copyable input](assets.ru/encrypt-and-store-a-treasure-map-on-the-cloud/In_37.png)
Clear[skeletonKey]
Поскольку ключ был создан с использованием пароля, Вы можете создать новый ключ, используя оригинальный ввод.
![Click for copyable input](assets.ru/encrypt-and-store-a-treasure-map-on-the-cloud/In_38.png)
newKey = GenerateSymmetricKey["Avast ye!", Method -> "Blowfish"]
![](assets.ru/encrypt-and-store-a-treasure-map-on-the-cloud/O_31.png)
Новый ключ может быть использован для ссылки на развёрнутую в облаке карту.
![Click for copyable input](assets.ru/encrypt-and-store-a-treasure-map-on-the-cloud/In_39.png)
reclaimedMap = Decrypt[newKey, CloudGet[stowed]]
![](assets.ru/encrypt-and-store-a-treasure-map-on-the-cloud/O_32.png)
Извлеките расположение сокровища.
![Click for copyable input](assets.ru/encrypt-and-store-a-treasure-map-on-the-cloud/In_40.png)
treasureLocation = reclaimedMap[[3, 2]]
![](assets.ru/encrypt-and-store-a-treasure-map-on-the-cloud/O_33.png)
Запросите маршрутный лист.
![Click for copyable input](assets.ru/encrypt-and-store-a-treasure-map-on-the-cloud/In_41.png)
TravelDirections[{$GeoLocation, treasureLocation}]
![](assets.ru/index.ru/M_2.gif)
![](assets.ru/encrypt-and-store-a-treasure-map-on-the-cloud/O_34.png)
Поскольку невозможно указать маршрут до сокровища, рассчитайте расстояние при помощи GeoDistance.
![Click for copyable input](assets.ru/encrypt-and-store-a-treasure-map-on-the-cloud/In_42.png)
GeoDistance[$GeoLocation, treasureLocation]
![](assets.ru/encrypt-and-store-a-treasure-map-on-the-cloud/O_35.png)
Определите ближайший к сокровищу аэропорт с учетом данного расстояния.
![Click for copyable input](assets.ru/encrypt-and-store-a-treasure-map-on-the-cloud/In_43.png)
airport = First[GeoNearest["Airport", treasureLocation]]
![](assets.ru/encrypt-and-store-a-treasure-map-on-the-cloud/O_36.png)
Расстояние от аэропорта до сокровища.
![Click for copyable input](assets.ru/encrypt-and-store-a-treasure-map-on-the-cloud/In_44.png)
GeoDistance[airport, treasureLocation]
![](assets.ru/encrypt-and-store-a-treasure-map-on-the-cloud/O_37.png)